我有以下列表:
my_list = ['a', 'b', 'c']
我有以下字符串列表:
my_strings = ['azz', 'bzz', 'czz']
我正在执行以下操作,以确定my_list
中的项目中是否包含my_strings
的任何项目:
for my_string in my_strings:
if any(x in my_string for x in my_list):
# Do Stuff
保留x
my_list
的最佳做法是什么,以便我可以执行以下操作:
#Do Stuff
new_var = my_string.split('x')[1]
通过确定我的列表中的zz
位于new_var
的{{1}}
a
分配给azz
答案 0 :(得分:2)
确实很简单,您甚至可以使用list comprehension在漂亮的单行内容中执行此操作,如下所示:
new_var = [my_string.split(x)[1] for my_string in my_strings for x in my_list if x in my_string]
这将返回my_strings
中所有字符串的所有分组中的第2个元素,其中存在来自my_list
的元素
答案 1 :(得分:0)
你不应该使用any
,因为你真的关心哪一个匹配:
for my_string in my_strings:
for x in my_list:
if x in my_string:
#Do Stuff
my_string.split('x')[0]
break
答案 2 :(得分:0)
您不应该使用any()
,因为您需要知道具体哪个元素与某个字符串匹配。只需使用常规for循环:
>>> def split(strings, lst):
... for string in strings:
... for el in lst:
... if el in string:
... yield string.split(el)[1]
...
>>>
>>> for string in split(['azz', 'bzz', 'czz'], ['a', 'b', 'c']):
... print(string)
...
zz
zz
zz
>>>
答案 3 :(得分:0)
如果您希望split
my_string
的第一个值为my_list
的第一个值
my_string[0].split(my_list[0])