Öğenin bir dizide / listede olup olmadığını kontrol edin


207

Dizelerden oluşan bir dizim varsa, dizede bir fordöngü yapmadan dizenin olup olmadığını kontrol edebilir miyim ? Özellikle, bir ififade içinde bunu yapmak için bir yol arıyorum , bu yüzden böyle bir şey:

if [check that item is in array]:

3
Bence soru burada
Tarun Ande


Yanıtlar:


400

"Dizi" demek istediğiniz "liste" demek istediğinizi varsayarsak,

if item in my_list:
    # whatever

Bu, yalnızca listeler için değil, tüm koleksiyonlar için geçerlidir. Sözlükler için, verilen anahtarın sözlükte mevcut olup olmadığını kontrol eder.


1
@jdi ve bu döngü, Python'da açıkça kodlanandan çok daha hızlı çalışacak, okunması daha kolay değil.
Mark Ransom

17

Ayrıca "dizi" derken "liste" demek istediğinizi varsayacağım. Sven Marnach'ın çözümü iyi. Listede tekrarlanan kontroller yapacaksanız, her kontrol için daha hızlı olabilen bir sete veya frozenset'e dönüştürmeye değer olabilir. Strs listenizin adı varsayarsak subjects:

subject_set = frozenset(subjects)
if query in subject_set:
    # whatever

3

Bir lambda işlevi kullanın.

Diyelim ki bir diziniz var:

nums = [0,1,5]

5'in içinde olup olmadığını kontrol edin nums:

(len(filter (lambda x : x == 5, nums)) > 0)

Bu çözüm daha sağlamdır. Artık dizinizde belirli bir koşulu karşılayan herhangi bir sayının olup olmadığını kontrol edebilirsiniz nums.

Örneğin, 5'ten büyük veya 5'e eşit herhangi bir sayı olup olmadığını kontrol edin nums:

(len(filter (lambda x : x >= 5, nums)) > 0)

Bu Python2 ile çalışır. Python 3.7 ile şu hatayı alırsınız:TypeError: object of type 'filter' has no len()
Jun711

1

Diziler için .val değerleri kullanmalısınız. örneğin, sütun adı olan bir veri çerçeveniz olduğunu varsayalım, örneğin, ['Ad'] test edin,

if name in test['Name'].values :
   print(name)

normal bir liste için .values ​​kullanmak zorunda değilsiniz


.Values ​​kullanmak için bir Pandas DataFrame nesnesine ihtiyacınız olduğunu düşünüyorum.
troymyname00

-3

Bir dizi için aynı sözdizimini de kullanabilirsiniz. Örneğin, bir Panda serisi içinde arama yapmak:

ser = pd.Series(['some', 'strings', 'to', 'query'])

if item in ser.values:
    # do stuff
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.