我在这样的列表中有一个名字列表
names = ['Test', 'Test 2', 'Test 3', 'Unknown']
我通过执行以下操作将它们从列表转换为字符串:
test = ', '.join(names)
我想在加入名单的同时加入名单,但是如果名字不明,我想忽略它。
如何有效地完成这项工作?
我可以这样做,但这可能不是最好的方法,因为我循环了两次:
arr = []
for n in names:
if n != 'Unknown':
arr.append(n)
答案 0 :(得分:3)
您可以使用以下列表理解:
dim rng as range
if not isempty(cells(7, "C")) then
set rng = range(cells(6, "C"), cells(6, "C").end(xldown).offset(0, 22))
else
set rng = range(cells(6, "C"), cells(6, "Y"))
end if
debug.print rng.address(0,0)
答案 1 :(得分:3)
您可以先重新创建列表,而无需使用Unknown,因此您可以这样做:
names = [element for element in names if element.lower() != "unknown"]
或者在连接过程中直接添加到行中:
test = ', '.join([element for element in names if element.lower() != "unknown"])
PS:看到我添加了一个代码,该代码会将过滤器视为不区分大小写
答案 2 :(得分:1)
如果您不想循环两次,则应该以与您相同的方式迭代列表,但要从名称[1]开始并进行如下串联:
test = names[0]
for name in names[1:]:
if name != 'Unknown':
test += ', '+name