Yang Pythonic cara untuk memeriksa apakah string x
substring y
adalah:
if x in y:
Menemukan jika x
adalah sama dengan a
, b
, c
, d
, e
, f
atau g
juga Pythonic:
if x in [a,b,c,d,e,f,g]:
Tapi memeriksa jika beberapa string x
berisi a
, b
, c
, d
, e
, f
atau g
tampaknya kikuk:
if a in x or b in x or c in x or d in x or e in x or f in x or g in x
Apakah ada yang lebih Pythonic metode memeriksa apakah string x
mengandung unsur daftar?
Aku tahu itu sepele untuk menulis ini sendiri menggunakan loop atau menggunakan regex:
re.search('(dog|cat|bird|mouse|elephant|pig|cow)', x)
tapi aku bertanya-tanya jika ada cara yang lebih bersih yang tidak melibatkan regex.
Yang Pythonic pendekatan yang akan digunakan setiap()
:
if any(s in x for s in (a,b,c,d,e,f,g)):
Dari dokumentasi terkait:
apapun
(iterable)
Return True jika semua elemen dari iterable adalah benar. Jika iterable kosong, kembali Palsu. Setara dengan:
def apapun(iterable): untuk elemen di iterable: jika elemen: mengembalikan True kembali Palsu
Juga, perhatikan bahwa I've digunakan sebuah tuple bukan dari daftar berikut. Jika anda a
-g
nilai-nilai yang telah ditentukan, maka tupel memang akan disukai. Lihat: tupel Yang lebih efisien dari list di Python?