我有两个元组:
t1 = ('A', 'B')
t2 = ('C', 'D', 'E')
我想知道如何在元组之间创建组合,因此结果应为:
AC, AD, AE, BC, BD, BE
修改
使用
list(itertools.combinations('abcd',2))
我可以为给定的字符串生成组合列表:
[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]
如果我插入元组而不是字符串,则会发生以下错误:
TypeError: sequence item 0: expected string, tuple found
有任何建议如何进行?
答案 0 :(得分:8)
itertools.product完全符合您的要求:
>>> import itertools
>>> t1 = ('A', 'B')
>>> t2 = ('C', 'D', 'E')
>>> list(itertools.product(t1, t2))
[('A', 'C'), ('A', 'D'), ('A', 'E'), ('B', 'C'), ('B', 'D'), ('B', 'E')]
>>> [''.join(x) for x in itertools.product(t1, t2)]
['AC', 'AD', 'AE', 'BC', 'BD', 'BE']
答案 1 :(得分:1)
for value_one in t1:
for value_two in t2:
result = (str(value_one), str(value_two))
print result
这不使用外部库。字面上只有两个for循环和字符串连接。格式化您喜欢的输出。
这似乎你要么没有付出任何努力来找到这个答案,要么我误解了这个问题。
编辑:我发现你来自R背景,所以你可能不了解Python语法。请参阅Python基础知识指南;我相信他们会有很大的帮助。要保存循环中的值,如@Naman所述,您需要创建一个空列表并[list_name].append([value])
所需的值,然后使用其他结构打印列表中的值。
答案 2 :(得分:0)
这是我的简单方法:
for i in t1:
for j in t2:
print(i+j,end="")
这三行输入给出了上述组合。
答案 3 :(得分:0)
您可以通过迭代两个元组来打印您想要的内容(或者创建一个空列表并将输出存储在该列表中)
l = []
for c1 in t1:
for c2 in t2:
print c1 + c2 + ',',
l.append(c1 + c2)
最后列表l
将包含输出元素。您可以通过
t = tuple(l)
答案 4 :(得分:0)
t = []
for x in t1:
for y in t2:
t.append(x+y)
t = tuple(t)
因此迭代两个元组,将每个组合追加到列表中,然后将列表转换回元组。
答案 5 :(得分:0)
所有可能的组合:
import itertools
t1 = ('A', 'B')
t2 = ('C', 'D', 'E')
print(tuple(itertools.combinations(t1 + t2, 2)))
输出:(('A', 'B'), ('A', 'C'), ('A', 'D'), ('A', 'E'), ('B', 'C'), ('B', 'D'), ('B', 'E'), ('C', 'D'), ('C', 'E'), ('D', 'E'))