仅当字符串匹配时才在python中连接字符串
我有一张这样的名单仅当字符串匹配时才在python中连接字符串,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我有一张这样的名单 names = ['Test', 'Test 2', 'Test 3', 'Unknown'] 我通过执行以下操作将它们从列表转换为字符串: test = ', '.join(names) 我想加入名单,因为我这样做,但我想忽略,如果名称是未知的 我如何才能有效地完成这项工作 我可以这样做,但这可能不是最好的方式,因为我循环了两次: arr = [] for n in names: if n != 'Unknown': arr.appe
names = ['Test', 'Test 2', 'Test 3', 'Unknown']
我通过执行以下操作将它们从列表转换为字符串:
test = ', '.join(names)
我想加入名单,因为我这样做,但我想忽略,如果名称是未知的
我如何才能有效地完成这项工作
我可以这样做,但这可能不是最好的方式,因为我循环了两次:
arr = []
for n in names:
if n != 'Unknown':
arr.append(n)
您可以使用以下列表:
', '.join([i for i in names if i!='Unknown'])
# 'Test, Test 2, Test 3'
您可以使用以下列表:
', '.join([i for i in names if i!='Unknown'])
# 'Test, Test 2, Test 3'
您可以先重新创建列表,而不需要未知项,因此可以执行以下操作:
names = [element for element in names if element.lower() != "unknown"]
或者在连接过程中直接在行中添加:
test = ', '.join([element for element in names if element.lower() != "unknown"])
ps:请注意,我添加了一个代码,将该过滤器视为不区分大小写的< /p> ,您可以先重新创建列表,而不必添加未知内容,这样您就可以:
names = [element for element in names if element.lower() != "unknown"]
或者在连接过程中直接在行中添加:
test = ', '.join([element for element in names if element.lower() != "unknown"])
PS:请注意,我添加了一个代码,将该过滤器视为不区分大小写的
< p>如果你不想循环两次,你应该像你一样重复列表,但是从名字(1)开始,这样做连接:test = names[0]
for name in names[1:]:
if name != 'Unknown':
test += ', '+name
如果您不想循环两次,您应该像以前一样迭代列表,但从名称[1]开始,并进行如下连接:
test = names[0]
for name in names[1:]:
if name != 'Unknown':
test += ', '+name