如何获取元素并在同一列表的多个版本中分解?

时间:2017-01-16 01:01:31

标签: python drop-down-menu

如果我有这个清单:

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"]

我怎样才能做到这一点?谢谢。

非常感谢您的所有答案。

2 个答案:

答案 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')]