2013-08-06 27 views
11

varsayalım Ya bir ya da iki element olabilir bir liste var:Kontrol kilit bir Python listede olup olmadığını

mylist=["important", "comment"] 

veya

mylist=["important"] 

Sonra çalışmak için bir değişken olmasını istiyorum mevcut bu 2 değere bağlı olarak bir bayrak olarak veya değil.

2. elemanın var olup olmadığını kontrol etmenin en iyi yolu nedir?

Zaten len(mylist) kullanarak yaptım. 2 ise, sorun değil. Çalışıyor ama 2. alanın tam olarak "yorum" olup olmadığını bilmek istiyorum.

>>> try: 
...  c=a.index("comment") 
... except ValueError: 
...  print "no such value" 
... 
>>> if c: 
... print "yeah" 
... 
yeah 

Ama çok uzun görünür:

Daha sonra bu çözüm geldi. Geliştirilebileceğini düşünüyor musunuz? Eminim, ancak Python Data Structures Documentation'dan uygun bir yol bulmayı başaramadım.

cevap

7

Ne hakkında:

'comment' in mylist 

ya, eğer:

>>> mylist = ["important", "comment"] 
>>> c = len(mylist) == 2 and mylist[1] == "comment" 
>>> c 
True 
>>> 
>>> mylist = ["important"] 
>>> c = len(mylist) == 2 and mylist[1] == "comment" 
>>> c 
False 
6

Kullanım in operatörü:

>>> mylist=["important", "comment"] 
>>> "comment" in mylist 
True 

Ah! Dediğin yeri kaçırdın, sadece "comment"'u 2. eleman olarak istiyorsun. Bunun için kullanabilirsiniz:

len(mylist) == 2 and mylist[1] == "comment" 
23

Sen in operatörünü kullanabilirsiniz: Örneğin

len(mylist) == 2 and mylist[1] == "comment" 

po sition önemlidir, bir dilim kullanımı: Liste uzunluğu 2 ve ikinci eleman ise, boyutu, bir, iki ya da daha uzun olan ve sadece True olan listeler için

mylist[1:] == ['comment'] 

ikinci çalışmaları 'comment' eşittir :

>>> test = lambda L: L[1:] == ['comment'] 
>>> test(['important']) 
False 
>>> test(['important', 'comment']) 
True 
>>> test(['important', 'comment', 'bar']) 
False 
İlgili konular