Dizelerden oluşan bir dizim varsa, dizede bir for
döngü yapmadan dizenin olup olmadığını kontrol edebilir miyim ? Özellikle, bir if
ifade içinde bunu yapmak için bir yol arıyorum , bu yüzden böyle bir şey:
if [check that item is in array]:
Dizelerden oluşan bir dizim varsa, dizede bir for
döngü yapmadan dizenin olup olmadığını kontrol edebilir miyim ? Özellikle, bir if
ifade içinde bunu yapmak için bir yol arıyorum , bu yüzden böyle bir şey:
if [check that item is in array]:
Yanıtlar:
"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.
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
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)
TypeError: object of type 'filter' has no len()
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