У меня есть следующий список:

['X', 'table', 'product1', 'product2', 'product3', 'product4', 'product5']

Из этого списка я хотел бы сохранить элементы, содержащие только слово product, и отбросить остальные.

Результат должен выглядеть так:

['product1', 'product2', 'product3', 'product4', 'product5']

Я хотел бы знать, как это можно сделать.

-3
user8207612 1 Май 2019 в 16:12

6 ответов

Лучший ответ

Используйте понимание списка и используйте in, чтобы определить, является ли строка product {{X2} } оцениваемый элемент

l = ['X', 'table', 'product1', 'product2', 'product3', 'product4', 'product5']

print([i for i in l if 'product' in i])
# ['product1', 'product2', 'product3', 'product4', 'product5']
4
Cohan 1 Май 2019 в 13:22

Это работает:

s = pd.Series(['X', 'table', 'product1', 'product2', 'product3', 'product4', 'product5'])
mask = s.str.match("product")
s[mask]
1
hacker315 1 Май 2019 в 13:15

Вы можете использовать метод сжатия списка, чтобы найти что-то конкретное в списке. пример

Я хочу найти всех студентов в этом списке: ls = ['LSD', 'Student1', 'Student2', 'Student1231', 'jj', 21]

Я нахожу его со списком метод в с конкретными критериями

Печать ([s для s в ls, если 'Student' в s])

Output = ['Student1', 'Student2', 'Student1231']

Вы можете использовать тот же метод, чтобы найти продукт в списке: product_ls = ['X', 'table', 'product1', 'product2', 'product3', 'product4', 'product5']

Print ([p для p в product_ls, если 'product' в p])

0
Rektime 3 Май 2019 в 08:07

Вы можете использовать понимание списка, где вы проверяете наличие слова product в каждом элементе

a = ['X', 'table', 'product1', 'product2', 'product3', 'product4', 'product5']
b = [i for i in a if 'product' in i]
# ['product1', 'product2', 'product3', 'product4', 'product5']
1
Sheldore 1 Май 2019 в 13:14

Вы также можете использовать фильтр , например:

lst = ['X', 'table', 'product1', 'product2', 'product3', 'product4', 'product5']
lst = filter(lambda x: 'product' in x, lst)
print(list(lst)) 
1
âńōŋŷXmoůŜ 1 Май 2019 в 13:23

Сначала вам нужно создать regex, а затем filter

import re

mylist = ['X', 'table', 'product1', 'product2', 'product3', 'product4', 'product5']
r = re.compile(".*product")
newlist = list(filter(r.match, mylist))
print(newlist)

Выходы:

['product1', 'product2', 'product3', 'product4', 'product5']
0
system123456 1 Май 2019 в 16:10