NOT null listesi girdileri 'sürekli' olup olmadığını belirlemek için Pythonic yol;
Bir şekilde kolay olmasa Hiçbiri listedeki Tek Sürekli bir dilim meydana belirlemek için arıyorum.Öğeleri Yok değil örnek olarak tamsayılar kullanacağım.
Örneğin, 3* *liste sürekli tam sayı girişleri için benim gereksinimleri karşılar. Kontrast, [1, 2, None, None, 3, None]
değiltamsayılar arasında Hiçbiri girişi olduğundan sürekli.
Biraz daha olası gibi bu bir açık örnekler.
Sürekli:
[1, 2, 3, None, None]
[None, None, 1, 2, 3]
[None, 1, 2, 3, None]
Sürekli Değil:
[None, 1, None, 2, None, 3]
[None, None, 1, None, 2, 3]
[1, 2, None, 3, None, None]
Benim ilk yaklaşım kullanmak değişkenleri takip etmek olsun ya da olmasın geçirdik rastlamak None
henüz, ve olsun ya da olmasın geçirdik rastlamak int
henüz bu biter ile ilgili bir çok iç içe geçmiş ve çok zor takip serisi eğer/else ifadeleri gömülü bir döngü için. (Çirkinlik üstüne, her durumda iş) için almadım İTİRAF EDİYORUM.
Eğer bir liste değil Hiçbiri öğeleri Tek Sürekli bir dilim oluşursa anlamak için daha kolay bir yol biliyor musun?
CEVAP
def contiguous(seq):
seq = iter(seq)
all(x is None for x in seq) # Burn through any Nones at the beginning
any(x is None for x in seq) # and the first group
return all(x is None for x in seq) # everthing else (if any) should be None.
İşte bir kaç örnek. next(seq)
bir yineleyici sonraki öğeyi almak için kullanabilirsiniz. Bir işareti bir sonraki öğeye işaret sonra her koyuyorum
example1:
seq = iter([None, 1, 2, 3, None]) # [None, 1, 2, 3, None]
# next^
all(x is None for x in seq)
# next^
any(x is None for x in seq)
# next^ (off the end)
return all(x is None for x in seq) # all returns True for the empty sequence
example2:
seq = iter([1, 2, None, 3, None, None]) # [1, 2, None, 3, None, None]
# next^
all(x is None for x in seq)
# next^
any(x is None for x in seq)
# next^
return all(x is None for x in seq) # all returns False when 3 is encountered
Nasıl değişken olup olmadığını belirle...
Nasıl eğer poligon noktaları listesi s...
En etkili yolu ise Lua bir masa boş (h...
Nasıl pi benim hesaplama doğru olup ol...
Nasıl belirli bir Linux 32 bit veya 64...