【问题标题】:How to join many "listed" tuples into one tuple in Python?如何在 Python 中将许多“列出的”元组加入一个元组?
【发布时间】:2016-05-13 10:41:30
【问题描述】:

in Python, How to join a list of tuples into one list?How to merge two tuples in Python?How To Merge an Arbitrary Number of Tuples in 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))

谁能帮我解决这个问题?

谢谢

【问题讨论】:

  • 那么,究竟是什么问题:从文件中读取元组到相应的 Python 变量中,或者将你拥有的变量合并为一个?你试过什么?
  • 为什么不把它们都添加到一个列表中,然后调用列表上的元组函数将其转换为一个元组
  • 看起来你有一个充满文本的文件,而不是元组。
  • 感谢您的回答。如果我不够清楚,我很抱歉。我的问题解释如下。

标签: python tuples


【解决方案1】:
tuple(ast.literal_eval(x) for x in my_open_file if x.strip())

我想……

【讨论】:

    【解决方案2】:
    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)
    

    【讨论】:

      【解决方案3】:

      链接答案中提到的列表理解也适用于 tuple() :

      print tuple((1,2) for x in xrange(0, 10))
      

      在开头省略“元组”或“列表”将返回一个生成器。

      print ((1,2) for x in xrange(0, 10))
      

      使用 [] 代替 () 是列表的简写:

      print [(1,2) for x in xrange(0, 10)]
      

      for 语句的求值返回一个生成器,而关键字或括号告诉 python 将其解包为该类型。

      【讨论】:

        【解决方案4】:

        这是我的问题:我想知道一个元组在我的“结果”中出现了多少次。所以我这样做了:

        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)

        而不是让一些 elts 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)

        谢谢

        【讨论】:

          猜你喜欢
          • 2011-10-15
          • 2013-02-22
          • 2014-02-07
          • 2020-10-01
          • 2019-07-07
          • 2022-06-15
          • 2021-11-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多