Saya punya daftar:
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
dan ingin mencari item yang berisi string 'abc'
. Bagaimana saya bisa melakukan itu?
if 'abc' in my_list:
akan memeriksa jika 'abc'
ada dalam daftar tetapi itu adalah bagian dari 'abc-123'
dan 'abc-456'
, 'abc'
tidak ada dengan sendirinya. Jadi bagaimana saya bisa mendapatkan semua barang yang mengandung 'abc'
?
Jawaban:
Jika Anda hanya ingin memeriksa keberadaan
abc
string apa pun dalam daftar, Anda bisa mencobaJika Anda benar-benar ingin mendapatkan semua item yang mengandung
abc
, gunakansumber
if myitem in myarray:
filter(lambda element: 'abc' in element, some_list)
index()
metode:try: return mylist.index(myitem); except ValueError: pass
Hanya membuang ini di luar sana: jika Anda perlu mencocokkan dengan lebih dari satu string, misalnya
abc
dandef
, Anda dapat menggabungkan dua pemahaman sebagai berikut:Keluaran:
sumber
{s for s in my_list for xs in matchers if xs in s}
(perhatikan tanda kurung keriting untuk membuat set yang unik). Mungkin lebih mudah dibaca, tetapi bisa lebih lambat jika sebagian besars
nilai memiliki kecocokan, karena Andaany
akan efisien berhenti pada kecocokan pertama.Gunakan
filter
untuk mendapatkan elemen-elemen yang adaabc
.Anda juga dapat menggunakan pemahaman daftar.
Omong-omong, jangan gunakan kata itu
list
sebagai nama variabel karena sudah digunakan untuklist
jenisnya.sumber
Jika Anda hanya perlu tahu apakah 'abc' ada di salah satu item, ini adalah cara terpendek:
sumber
Ini pertanyaan yang cukup lama, tetapi saya menawarkan jawaban ini karena jawaban sebelumnya tidak mengatasi item dalam daftar yang bukan string (atau semacam objek yang dapat diubah). Barang-barang seperti itu akan menyebabkan seluruh pemahaman daftar gagal dengan pengecualian.
Untuk menangani item-item semacam itu dalam daftar dengan melewatkan item-item yang tidak dapat diubah, gunakan yang berikut ini:
kemudian, dengan daftar seperti itu:
Anda masih akan mendapatkan item yang cocok (
['abc-123', 'abc-456']
)Tes untuk iterable mungkin bukan yang terbaik. Mendapatnya dari sini: Dengan Python, bagaimana cara menentukan apakah suatu objek dapat diubah?
sumber
[el for el in lst if el and (st in el)]
lebih masuk akal dalam contoh yang diberikan?my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
tidak perlu terlalu rumit.sumber
sumber
if 'abc' in item
daripada menggunakanitem.find('abc') == -1
.sumber
Gunakan
__contains__()
metode kelas string Pythons .:sumber
Saya baru mengenal Python. Saya mendapatkan kode di bawah ini yang berfungsi dan membuatnya mudah dimengerti:
sumber
sumber
sumber
import re
mylist=['abc','def','ghi','abcff']
my_list_string=''.join(mylist)
string_to_find="abc"
res=re.findall(string_to_find,my_list_string)
print(res)
Saya melakukan pencarian, yang mengharuskan Anda untuk memasukkan nilai tertentu, maka itu akan mencari nilai dari daftar yang berisi masukan Anda:
Coba cari 'abc'.
sumber
sumber
Saya membutuhkan daftar indeks yang sesuai dengan pertandingan sebagai berikut:
keluaran
sumber
Pertanyaan: Berikan informasi abc
sumber
Dari pengetahuan saya, pernyataan 'untuk' akan selalu menghabiskan waktu.
Ketika panjang daftar bertambah, waktu eksekusi juga akan bertambah.
Saya pikir, mencari substring dalam string dengan pernyataan 'is' sedikit lebih cepat.
Tapi, saya setuju bahwa
any
pernyataan itu lebih mudah dibaca.sumber