循环列表以使用不同的前缀输出每个元素两次

一个简单的列表,我想循环打印每个元素两次。每次添加不同的前缀。输出将附加到新列表中。

List1 = ["9016","6416","9613"]

理想的结果是:

['AB9016', 'CD9016', 'AB6416', 'CD6416', AB9613', 'CD9613']

我在下面尝试过,但输出是:

new_list = []for x in List1:
    for _ in [0,1]:
        new_list.append("AB" + x)
        new_list.append("CD" + x)

打印(新列表)

['AB9016', 'CD9016', 'AB9016', 'CD9016', 'AB6416', 'CD6416', 'AB6416', 'CD6416', 'AB9613', 'CD9613', 'AB9613', 'CD9613']

我不能使用:

new_list.append("AB" + x).append("CD" + x)

正确的做法是什么?谢谢。


www说
浏览 261回答 6
6回答

炎炎设计

问题出在内循环:这两个appends会被调用两次。固定代码:new_list = []for x in List1:    new_list.append("AB" + x)    new_list.append("CD" + x)关于链接调用:如果返回列表(附加了新项目)append它会起作用,但情况并非如此,该方法返回(doc)。appendappendNone

一只名叫tom的猫

也可以尝试一个简单的理解:List1 = ["9016","6416","9613"]result = [j+i for i in List1 for j in ('AB','CD')]# ['AB9016', 'CD9016', 'AB6416', 'CD6416', 'AB9613', 'CD9613']

守着星空守着你

最快的方法是使用列表理解。我们正在使用 2 列表理解来创建desired_list. 请注意,我还使用了 ,f string因此我可以轻松添加“AB andCD”前缀。list1 = ["9016","6416","9613"]desired_list = [f'AB{x}' for x in list1] + [f'CD{x}' for x in list1]print(desired_list)

莫回无

我会按照以下方式使用itertools.product完成该任务import itertoolslist1 = ["9016","6416","9613"]prefixes = ["AB","CD"]result = [x+y for y,x in itertools.product(list1,prefixes)]print(result)输出:['AB9016', 'CD9016', 'AB6416', 'CD6416', 'AB9613', 'CD9613']

慕少森

这是一个使用的解决方案itertools.product:from itertools import productlst1 = ['9016', '6416', '9613']lst2 = ['AB', 'CD']result = list(map(''.join, map(reversed, product(lst1, lst2))))

呼唤远方

sum我们也可以使用:In [25]: sum([[f'AB{i}',f'CD{i}'] for i in List1],[])Out[25]: ['AB9016', 'CD9016', 'AB6416', 'CD6416', 'AB9613', 'CD9613']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python