如果我有这个清单:
a = ["1","2","t","fthdf","u"]
我想要创建4个新列表,除了第三个索引中的相同元素之外我想基本拼接起来:
a = ["1","2","t","f","u"]
b = ["1","2","t","t","u"]
c = ["1","2","t","h","u"]
d = ["1","2","t","d","u"]
e = ["1","2","t","f","u"]
我怎样才能做到这一点?谢谢。
非常感谢您的所有答案。
答案 0 :(得分:2)
您可以使用像
这样的简单列表理解lists = [a[:3] + [elem] + a[4:] for elem in a[3]]
# [['1', '2', 't', 'f', 'u'],
# ['1', '2', 't', 't', 'u'],
# ['1', '2', 't', 'h', 'u'],
# ['1', '2', 't', 'd', 'u'],
# ['1', '2', 't', 'f', 'u']]
答案 1 :(得分:1)
由于你有一个可迭代的字符串列表,你可以使用product,它返回输入迭代的笛卡尔积,注意这里*
来解压缩原始列表将它们作为单独的参数传递给product
(这假定除了你想要展开的字符串之外的所有字符串只有一个字符):
from itertools import product
list(product(*a))
#[('1', '2', 't', 'f', 'u'),
# ('1', '2', 't', 't', 'u'),
# ('1', '2', 't', 'h', 'u'),
# ('1', '2', 't', 'd', 'u'),
# ('1', '2', 't', 'f', 'u')]