![](/img/trans.png)
[英]Get items from list if the item contains any of the strings in another list (Python)
[英]Get items from a list if an item contains two separate strings python
我有以下列表:
["west_sky_1_blue","west_sky_1_green","east_sky_blue","east_sky_green","west_sky_2_blue","west_sky_2_green"]
我怎样才能将包含字符串“west”和“blue”的任何项目放入列表中?(所以在这个例子中,我想将“west_sky_1_blue”和“west_sky_2_blue”放入另一个列表中。
我原来的方法如下所示,但不起作用
west_blue_list=[s for s in all_col if "west" && "blue"in s]
您的条件格式错误,请在 v 中使用'west' in v and 'blue' in v
:
lst = ["west_sky_1_blue","west_sky_1_green","east_sky_blue","east_sky_green","west_sky_2_blue","west_sky_2_green"]
out = [v for v in lst if 'west' in v and 'blue' in v]
print(out)
印刷:
['west_sky_1_blue', 'west_sky_2_blue']
您最初的方法有正确的想法,但语法错误。
all_col = ["west_sky_1_blue","west_sky_1_green","east_sky_blue","east_sky_green","west_sky_2_blue","west_sky_2_green"]
west_blue_list = [s for s in all_col if "west" in s and "blue" in s]
或者,使用filter
:
west_blue_list = list(filter(lambda s: "west" in s and "blue" in s, all_col))
或者,使用正则表达式和filter
:
import re
pattern = re.compile("west.*blue")
west_blue_list = list(filter(pattern.search, all_col))
前一个只会保留"west"
出现在"blue"
之前的字符串; 如果它在列表中,它不会保留"blue_sky_in_the_west"
。
或者,使用startswith
和endswith
:
west_blue_list = [s for s in all_col if s.startswith('west') and s.endswith('blue')]
这个只会保留以“west”开头并以“blue”结尾的字符串; 如果它在列表中,它不会保留"southwest_sky_blue"
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.