【发布时间】:2018-06-13 15:02:21
【问题描述】:
我需要帮助
这是我的列表和元组。我不知道哪个更适合解决方案,所以我在这里打印两者。
我在这里只使用列表来展示我的问题。
x11 = ["1", "x", "t", "f", "T"]
x12 = ["C", "D", "6"]
x13 = ["5", "9", "J", "D"]
x14 = ["e", "a", "o", "x", "f", "z"]
x15 = ["1", "x", "7", "f", "T"]
x16 = ["D", "O", "0", "B", "8", "Q", "q"]
x17 = ["c", "a"]
x18 = ["9", "J", "7", "f", "I"]
x19 = ["C", "O", "D", "0", "6"]
x20 = ["P", "F", "C"]
xlist1 = [x11,x12,x13,x14,x15,x16,x17,x18,x19,x20]
t11 = ("1", "x", "t", "f", "T")
t12 = ("C", "D", "6")
t13 = ("5", "9", "J", "D")
t14 = ("e", "a", "o", "x", "f", "z")
t15 = ("1", "x", "7", "f", "T")
t16 = ("D", "O", "0", "B", "8", "Q", "q")
t17 = ("c", "a")
t18 = ("9", "J", "7", "f", "I")
t19 = ("C", "O", "D", "0", "6")
t20 = ("P", "F", "C")
tuple1 = (t11,t12,t13,t14,t15,t16,t17,t18,t19,t20)
我希望在 xlist1/tuple1 上进行迭代/循环以获取特殊格式的新列表/元组。 目标输出列表/元组应该是唯一的。
output = (["1C5e1Dc9CP"],["xC5e1Dc9CP"],["tC5e1Dc9CP"],["FC5e1Dc9CP"],["TC5e1Dc9CP"],
["1D5e1Dc9CP"],["165e1Dc9CP"],
["1C9e1Dc9CP"],["1CJe1Dc9CP"],["1CDe1Dc9CP"],
["1C5a1Dc9CP"],["1C5o1Dc9CP"],["1C5x1Dc9CP"],["1C5f1Dc9CP"],["1C5z1Dc9CP"],
...
["T6DzTqaI6C"])
迭代所有指标:
'1D5e1Dc9CP' '1D5e1Dc9CP' '1D9e1Dc9CP' '1DJe1Dc9CP' '1DDe1Dc9CP' '1D5a1Dc9CP' '1D5o1Dc9CP' '1D5x1Dc9CP' '1D5f1Dc9CP' '1D5z1Dc9CP' '1D5exDc9CP' '1D5e7Dc9CP' '1D5efDc9CP' '1D5eTDc9CP' '1D5e1Oc9CP' '1D5e10c9CP' '1D5e1Bc9CP' '1D5e18c9CP' '1D5e1Qc9CP' '1D5e1qc9CP' '1D5e1Da9CP' '1D5e1DcJCP' '1D5e1Dc7CP' '1D5e1DcfCP' '1D5e1DcICP' '1D5e1Dc9OP' '1D5e1Dc9DP' '1D5e1Dc90P' '1D5e1Dc96P' '1D5e1Dc9CF' '1D5e1Dc9CC'
'xD5exDc9CP' 'x65exDc9CP' 'xC9exDc9CP' 'xCJe1Dc9CP' 'xCDe1Dc9CP' 'xC5a1Dc9CP' 'xC5o1Dc9CP' 'xC5x1Dc9CP' 'xC5f1Dc9CP' 'xC5z1Dc9CP' 'xC5exDc9CP' 'xC5e7Dc9CP' 'xC5efDc9CP' 'xC5eTDc9CP' 'xC5e1Oc9CP' 'xC5e10c9CP' 'xC5e1Bc9CP' 'xC5e18c9CP' 'xC5e1Qc9CP' 'xC5e1Qc9CP' 'xC5e1Da9CP' 'xC5e1DcJCP' 'xC5e1Dc7CP' 'xC5e1DcfCP' 'xC5e1DcICP' 'xC5e1Dc9OP' 'xC5e1Dc9DP' 'xC5e1Dc90P' 'xC5e1Dc96P' 'xC5e1Dc9CF' 'xC5e1Dc9CC'
'TC5e1Dc9CP' 'TCJe1Dc9CP' 'TCDe1Dc9CP' 'TC5a1Dc9CP' 'TC5o1Dc9CP' 'TC5x1Dc9CP' 'TC5f1Dc9CP' 'TC5z1Dc9CP' 'TC5exDc9CP' 'TC5e7Dc9CP' 'TC5efDc9CP' 'TC5eTDc9CP' 'TC5e1Oc9CP' 'TC5e10c9CP' 'TC5e1Bc9CP' 'TC5e18c9CP' 'TC5e1Qc9CP' 'TC5e1qc9CP' 'TC5e1Da9CP' 'TC5e1DcJCP' 'TC5e1Dc7CP' 'TC5e1DcfCP' 'TC5e1DcICP' 'TC5e1Dc9OP' 'TC5e1Dc9DP' 'TC5e1Dc90P' 'TC5e1Dc96P' 'TC5e1Dc9CF' 'TC5e1Dc9CC'
'TD5e1Dc9CP' 'TDJe1Dc9CP' 'TDDe1Dc9CP' 'TD5a1Dc9CP' 'TD5o1Dc9CP' 'TD5x1Dc9CP' 'TD5f1Dc9CP' 'TD5z1Dc9CP' 'TD5exDc9CP' 'TD5e7Dc9CP' 'TD5efDc9CP' 'TD5eTDc9CP' 'TD5e1Oc9CP' 'TD5e10c9CP' 'TD5e1Bc9CP' 'TD5e18c9CP' 'TD5e1Qc9CP' 'TD5e1qc9CP' 'TD5e1Da9CP' 'TD5e1DcJCP' 'TD5e1Dc7CP' 'TD5e1DcfCP' 'TD5e1DcICP' 'TD5e1Dc9OP' 'TD5e1Dc9DP' 'TD5e1Dc90P' 'TD5e1Dc96P' 'TD5e1Dc9CF' 'TD5e1Dc9CC'
'T65e1Dc9CP' 'T6Je1Dc9CP' 'T6De1Dc9CP' 'T65a1Dc9CP' 'T65o1Dc9CP' 'T65x1Dc9CP' 'T65f1Dc9CP' 'T65z1Dc9CP' 'T65exDc9CP' 'T65e7Dc9CP' 'T65efDc9CP' 'T65eT6c9CP' 'T65e1Oc9CP' 'T65e10c9CP' 'T65e1Bc9CP' 'T65e18c9CP' 'T65e1Qc9CP' 'T65e1qc9CP' 'T65e1Da9CP' 'T65e1DcJCP' 'T65e1Dc7CP' 'T65e1DcfCP' 'T65e1DcICP' 'T65e1Dc9OP' 'T65e1Dc9DP' 'T65e1Dc90P' 'T65e1Dc96P' 'T65e1Dc9CF' 'T65e1Dc9CC'
这里我展示了带有inidicies的迭代算法:
output = ([x11[0]+x12[0]+x13[0]+x14[0]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# 1C5e1Dc9CP
[x11[1]+x12[0]+x13[0]+x14[0]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# xC5e1Dc9CP
[x11[2]+x12[0]+x13[0]+x14[0]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# tC5e1Dc9CP
[x11[3]+x12[0]+x13[0]+x14[0]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# FC5e1Dc9CP
[x11[4]+x12[0]+x13[0]+x14[0]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# TC5e1Dc9CP
[x11[0]+x12[1]+x13[0]+x14[0]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# 1D5e1Dc9CP
[x11[0]+x12[1]+x13[0]+x14[0]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# 165e1Dc9CP
[x11[0]+x12[0]+x13[1]+x14[0]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# 1C9e1Dc9CP
[x11[0]+x12[0]+x13[2]+x14[0]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# 1CJe1Dc9CP
[x11[0]+x12[0]+x13[3]+x14[0]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# 1CDe1Dc9CP
[x11[0]+x12[1]+x13[0]+x14[1]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# 1C5a1Dc9CP
[x11[0]+x12[1]+x13[0]+x14[2]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# 1C5o1Dc9CP
[x11[0]+x12[1]+x13[0]+x14[3]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# 1C5x1Dc9CP
[x11[0]+x12[1]+x13[0]+x14[4]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# 1C5f1Dc9CP
[x11[0]+x12[1]+x13[0]+x14[5]+x15[0]+x16[0]+x17[0]+x18[0]+x19[0]+x20[0]],
# 1C5z1Dc9CP
...
[x11[4]+x12[2]+x13[3]+x14[5]+x15[4]+x16[6]+x17[1]+x18[5]+x19[4]+x20[2]])
# T6DzTqaI6C
因此,重要的是输出元组/列表是唯一的并且具有相同的长度== 10 chars、(len(xlist1)) 并且始终是方向
从 x11 .. x20.
我已经尝试过,但它并没有解决它......
combs = functools.reduce(lambda x, y: list(itertools.combinations(xlist1, y)) + x, range(len(xlist1)+1), [])
for c in combs:
print ("Combination:", c)
或
combs = list(itertools.combinations(tuple1, r=x))
permutations = list(itertools.permutations(xlist1, r=None)) # terminal killed it :/
有人有建议、想法或解决方案吗?
【问题讨论】:
-
输出中的最后一项不应该以
T开头吗? -
为了确保输出是唯一的,你可以使用一个集合。确保您没有像上述格式那样包含嵌套在列表中的字符串,因为列表是不可散列的,因此您无法将它们添加到集合中。我认为使用 set("1C5e1Dc9CP", "xC5e1Dc9CP" ... ) 而不是 (["1C5e1Dc9CP"], ["xC5e1Dc9CP"]...) 会起作用。
-
只要每个子列表没有重复项,从它们中抽取的任何组合都不应该重复。
-
x18&t18有一个重复的J。是否需要处理重复项? -
你的“带索引的迭代”明确生成了两次相同的字符串,需要说明顺序。
标签: python list loops tuples iteration