列表理解:为输入列表中的每个项目创建2个项目?

2024-04-26 00:09:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我的清单如下:

list1 = ["pierre", "paul", "jacques"]

我想创建一个包含6个项目的新列表:

list2 = ["pierre", "pierre#2","paul","paul#2", "jacques", "jacques#2"] 

我尝试了以下方法:

list2 = [i, "{}#2".format(i) for i in list1 ]

这显然不管用。有人能给我一个建议吗?你知道吗


Tags: 项目方法informat列表for建议list2
3条回答

可以使用嵌套循环执行此操作:

[item for i in list1 for item in (i, "{}#2".format(i))]

for item in (...)内部循环每次生成2个项。你知道吗

也许我是唯一一个很难阅读嵌套列表理解的人,但我倾向于像瘟疫一样避开它们。在这种情况下,我可能会使用香草圈:

lst_out = []
for item in list1:
    lst_out.extend((item, '{}#2'.format(item)))

或者另一个选项是生成器函数:

def gen(list1):
    for item in list1:
        yield item
        yield '{}#2'.format(item)

这不是百分之百正确的。。。标准的嵌套列表扁平化习惯用法对我来说很容易识别,所以我已经用过一两次了。也许我只需要开始使用它们,这样它们就更直观了…

您仍然可以尝试(只是缺少一些括号来创建tuple然后“展平”元组:

list2 = [(i, "{}#2".format(i)) for i in list1]
list2 = [x for y in list2 for x in y]

产生:

['pierre', 'pierre#2', 'paul', 'paul#2', 'jacques', 'jacques#2']

相关问题 更多 >