SORU
6 ŞUBAT 2013, ÇARŞAMBA


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
6 ŞUBAT 2013, ÇARŞAMBA


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • chrmoe

    chrmoe

    7 Kasım 2006
  • Huot Media

    Huot Media

    7 Mayıs 2010
  • Matthew Morrill

    Matthew Morr

    15 EKİM 2011