比如,已知二维列表[[a,b,c],[d,e],[f]],要求从每个子列表中选出一个元素进行相加,列出所有的组合情况,本题输出为adf,aef,bdf,bef,cdf,cef这6种可能。有很多这样的列表,子列表个数不一定相同,请教怎么用python进行处理
比如,已知二维列表[[a,b,c],[d,e],[f]],要求从每个子列表中选出一个元素进行相加,列出所有的组合情况,本题输出为adf,aef,bdf,bef,cdf,cef这6种可能。有很多这样的列表,子列表个数不一定相同,请教怎么用python进行处理
不多说,上代码
#!/usr/bin/python
arr = [
[
'a', 'b', 'c',
],
[
'd', 'e',
],
[
'f', 'g', 'h'
]
]
result = []
length = 1
for row in arr:
length *= len(row)
# 初始化返回值数组长度
for i in range(0, length):
result.append([])
for row in arr:
i = 0
while i < len(result):
for letter in row:
result[i].append(letter)
i += 1
for row in result:
print ",".join(row)
当然使用递归了。
那你给的例子,处理整个列表相当于处理 [[d, e], [f]] 的结果(假设是 x) 加上 遍历第一项 [a, b, c],也就是就是最后的结果。至于对 [[d, e], [f]] 的处理,可以继续往下递归
2 回答5.3k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答960 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决