Ik heb een lijst:
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
en wil zoeken naar items die de string bevatten 'abc'
. Hoe kan ik dat doen?
if 'abc' in my_list:
Controleer of 'abc'
in de lijst bestaat, maar het maakt deel uit van 'abc-123'
en 'abc-456'
, 'abc'
bestaat niet alleen. Dus hoe kan ik alle items krijgen die 'abc'
bevatten?
Antwoord 1, Autoriteit 100%
Als u alleen wilt controleren op de aanwezigheid van abc
in een reeks in de lijst, kunt u
proberen
some_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
if any("abc" in s for s in some_list):
# whatever
Als u echt alle items bevat die abc
bevatten, gebruikt u
matching = [s for s in some_list if "abc" in s]
Antwoord 2, Autoriteit 15%
Geef hier gewoon dit in: als u toevallig tegen meer dan één string moet matchen, bijvoorbeeld abc
en def
, kunt u twee uitgebreide gegevens combineren als volgt:
matchers = ['abc','def']
matching = [s for s in my_list if any(xs in s for xs in matchers)]
Uitgang:
['abc-123', 'def-456', 'abc-456']
Antwoord 3, Autoriteit 8%
Gebruik filter
om bij de elementen te komen die abc
hebben.
>>> lst = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
>>> print filter(lambda x: 'abc' in x, lst)
['abc-123', 'abc-456']
Je kunt ook een lijstbegrip gebruiken.
>>> [x for x in lst if 'abc' in x]
Trouwens, gebruik het woord list
niet als variabelenaam, aangezien het al wordt gebruikt voor het type list
.
Antwoord 4, autoriteit 7%
Als je gewoon wilt weten of ‘abc’ in een van de items staat, is dit de kortste manier:
if 'abc' in str(my_list):
Opmerking: dit veronderstelt dat ‘abc’ een alfanumerieke tekst is. Gebruik het niet als ‘abc’ een speciaal teken zou kunnen zijn (bijv. []’, ).
Antwoord 5, autoriteit 2%
Dit is een vrij oude vraag, maar ik bied dit antwoord aan omdat de vorige antwoorden niet omgaan met items in de lijst die geen strings zijn (of een soort itereerbaar object). Dergelijke items zouden ervoor zorgen dat het volledige begrip van de lijst faalt met een uitzondering.
Om dergelijke items in de lijst op een elegante manier af te handelen door de niet-itereerbare items over te slaan, gebruikt u het volgende:
[el for el in lst if isinstance(el, collections.Iterable) and (st in el)]
dan, met zo’n lijst:
lst = [None, 'abc-123', 'def-456', 'ghi-789', 'abc-456', 123]
st = 'abc'
je krijgt nog steeds de overeenkomende items (['abc-123', 'abc-456']
)
De test voor iterabel is misschien niet de beste. Ik heb het hier vandaan: Hoe doe je in Python Ik bepaal of een object itereerbaar is?
Antwoord 6
x = 'aaa'
L = ['aaa-12', 'bbbaaa', 'cccaa']
res = [y for y in L if x in y]
Antwoord 7
for item in my_list:
if item.find("abc") != -1:
print item
Antwoord 8
any('abc' in item for item in mylist)
Antwoord 9
Ik ben nieuw in Python. Ik heb de onderstaande code werkend gekregen en het is gemakkelijk te begrijpen gemaakt:
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
for item in my_list:
if 'abc' in item:
print(item)
Antwoord 10
Gebruik de __contains__()
methode van Pythons string class.:
a = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
for i in a:
if i.__contains__("abc") :
print(i, " is containing")
Antwoord 11
Ik had de lijstindicesnodig die als volgt overeenkomen met een match:
lst=['abc-123', 'def-456', 'ghi-789', 'abc-456']
[n for n, x in enumerate(lst) if 'abc' in x]
uitvoer
[0, 3]
Antwoord 12
Als je een lijst met gegevens voor meerdere substrings wilt krijgen
je kunt het op deze manier veranderen
some_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
# select element where "abc" or "ghi" is included
find_1 = "abc"
find_2 = "ghi"
result = [element for element in some_list if find_1 in element or find_2 in element]
# Output ['abc-123', 'ghi-789', 'abc-456']
Antwoord 13
mylist=['abc','def','ghi','abc']
pattern=re.compile(r'abc')
pattern.findall(mylist)
Antwoord 14
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
for item in my_list:
if (item.find('abc')) != -1:
print ('Found at ', item)
Antwoord 15
Ik heb een zoekopdracht uitgevoerd, waarbij u een bepaalde waarde moet invoeren, dan zal het zoeken naar een waarde uit de lijst die uw invoer bevat:
my_list = ['abc-123',
'def-456',
'ghi-789',
'abc-456'
]
imp = raw_input('Search item: ')
for items in my_list:
val = items
if any(imp in val for items in my_list):
print(items)
Probeer te zoeken naar ‘abc’.
Antwoord 16
def find_dog(new_ls):
splt = new_ls.split()
if 'dog' in splt:
print("True")
else:
print('False')
find_dog("Is there a dog here?")
Antwoord 17
Nan aan lijst toevoegen, en het onderstaande werkt voor mij:
some_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456',np.nan]
any([i for i in [x for x in some_list if str(x) != 'nan'] if "abc" in i])
Antwoord 18
Vraag: geef de informatie van abc
a = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
aa = [ string for string in a if "abc" in string]
print(aa)
Output => ['abc-123', 'abc-456']