How to join many “listed” tuples into one tuple in Python?
在python中,关于这个问题的答案很少,如何将一个元组列表连接到一个列表中?,如何在python中合并两个元组?,如何在python中合并任意数量的元组?所有的答案都引用了元组列表,所以提供的解决方案对我来说似乎是无用的。
这是我的问题,我有一个包含这样列出的元组的文件:
(1, 5)
(5, 3)
(10, 3)
(5, 4)
(1, 3)
(2, 5)
(1, 5)
我想将它们加入到一个这样的元组中:
((1, 5), (5, 3), (10, 3), (5, 4), (1, 3), (2, 5), (1, 5))
有人能帮我解决这个问题吗?
谢谢
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | a = (1, 5) b = (5, 3) c = (10, 3) d = (5, 4) e = (1, 3) f = (2, 5) g = (1, 5) tul = (a, b, c, d, e, f, g) print(tul) |
1 | tuple(ast.literal_eval(x) for x in my_open_file if x.strip()) |
我想…
我的问题是:我想知道一个元组在我的"结果"中出现了多少次。所以我这样做了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from collections import Counter liste = [1,2,3,5,10] liste2 = [[1,2,3,5,10], [1,2], [1,5,10], [3,5,10], [1,2,5,10]] for elt in liste2: syn = elt # identify each sublist of liste2 as syn nTuple = len(syn) # number of elements in the syn for i in liste: myTuple = () if synset.count(i): # check if an item of liste is in liste2 myTuple = (i, nTuple) if len(myTuple) == '0': # remove the empty tuples del(myTuple) else: result = [myTuple] c = Counter(result) for item in c.items(): print(item) |
我得到了这些结果:
((1, 5), 1)
((2, 5), 1)
((3, 5), 1)
((5, 5), 1)
((10, 5), 1)
((1, 2), 1)
((2, 2), 1)
((1, 3), 1)
((5, 3), 1)
((10, 3), 1)
((3, 3), 1)
((5, 3), 1)
((10, 3), 1)
((1, 4), 1)
((2, 4), 1)
((5, 4), 1)
((10, 4), 1)
我希望有一个元组(key,value),其中value=key在'result'中出现的次数,而不是有一些elt n次(例如((5,3),1)和((10,3),1)出现两次。这就是为什么我认为在使用counter之前可以将列出的元组加入到一个元组中。
我想得到这样的结果:
((1, 5), 1)
((2, 5), 1)
((3, 5), 1)
((5, 5), 1)
((10, 5), 1)
((1, 2), 1)
((2, 2), 1)
((1, 3), 1)
((5, 3), 2)
((10, 3), 2)
((3, 3), 1)
((1, 4), 1)
((2, 4), 1)
((5, 4), 1)
((10, 4), 1)
谢谢
链接答案中提到的列表理解也适用于tuple():
1 | print tuple((1,2) for x in xrange(0, 10)) |
在开头去掉"tuple"或"list"将返回一个生成器。
1 | print ((1,2) for x in xrange(0, 10)) |
使用[]而不是()是列表的缩写:
1 | print [(1,2) for x in xrange(0, 10)] |
for语句的计算返回一个生成器,而关键字或括号告诉python将其解包到该类型中。