【问题标题】:Reference an Element in a List of Tuples引用元组列表中的元素
【发布时间】:2011-09-21 05:52:47
【问题描述】:

抱歉,我是 Python 新手。我有一个tuples 的列表,我想知道如何引用列表中每个tuple 的第一个元素。我认为它类似于

for i in number_of_tuples :
  first_element = myList[i[0]]

你知道吗,[list_element[tuple_element]]?但是,这似乎不是正确的方法。任何帮助将不胜感激。

谢谢,

特纳

【问题讨论】:

  • myList[i][0] 或更有趣:[i[0] for i in myList]

标签: python list reference element tuples


【解决方案1】:

你也可以使用itemgetter操作符:

from operator import itemgetter
my_tuples = [('c','r'), (2, 3), ('e'), (True, False),('text','sample')]
map(itemgetter(0), my_tuples)

【讨论】:

    【解决方案2】:

    这是一个简单的例子:

    termList = []
    termList.append(('term1', [1,2,3,4]))
    termList.append(('term2', [5,6,7,8]))
    termList.append(('term3', [9,10,11,12]))
    
    result = [x[1] for x in termList if x[0] == 'term3']
    
    print(result)
    

    【讨论】:

      【解决方案3】:

      所以你有一个“元组列表”,让我假设你正在处理一些二维矩阵,在这种情况下,一个方便的接口来完成你需要的是numpy 提供的接口。

      假设您有一个数组arr = numpy.array([[1, 2], [3, 4], [5, 6]]),您可以使用arr[:, 0] 获取每个“元组”中所有第一个元素的新数组。

      【讨论】:

        【解决方案4】:

        这里的所有其他答案都是正确的,但不要解释为什么你尝试的是错误的。当您执行 myList[i[0]] 时,您是在告诉 Python i 是一个元组,并且您希望将元组 i 的值或第一个元素作为 myList 的索引。

        在大多数编程语言中,当您需要访问嵌套数据类型(例如数组、列表或元组)时,您会附加括号以到达最里面的项目。第一个括号为您提供列表中元组的位置。第二个括号为您提供元组中项目的位置。

        这是我想出的一个简单的基本示例:

        info = [ ( 1, 2), (3, 4), (5, 6) ]
        
        info[0][0] == 1
        info[0][1] == 2
        info[1][0] == 3
        info[1][1] == 4
        info[2][0] == 5
        info[2][1] == 6
        

        【讨论】:

        • 我想知道这个答案是否比列表理解答案具有更高的计算成本?后者当然有更高的内存成本!
        【解决方案5】:

        而不是:

        first_element = myList[i[0]]
        

        你可能想要:

        first_element = myList[i][0]
        

        【讨论】:

          【解决方案6】:

          代码

          my_list = [(1, 2), (3, 4), (5, 6)]
          for t in my_list:
              print t
          

          打印

          (1, 2)
          (3, 4)
          (5, 6)
          

          循环遍历my_list,并将my_list 的元素一个接一个地分配给tmy_list 的元素恰好是元组,因此 t 将始终是元组。要访问元组t 的第一个元素,请使用t[0]

          for t in my_list:
              print t[0]
          

          要访问列表中给定索引i 的元组的第一个元素,可以使用

          print my_list[i][0]
          

          【讨论】:

          • 这适用于 python 2 吗?如果是这样,python 3 是否有类似的版本
          • @imantha 这是 Python 2。在 Python 3 中,只需用括号调用 print(),此答案中的其他所有内容都保持不变。
          【解决方案7】:

          您可以使用list comprehension 获取每个元组中第一个元素的列表:

          >>> my_tuples = [(1, 2, 3), ('a', 'b', 'c', 'd', 'e'), (True, False), 'qwerty']
          >>> first_elts = [x[0] for x in my_tuples]
          >>> first_elts
          [1, 'a', True, 'q']
          

          【讨论】:

          • 如果我想访问元组的所有元素,比如我有一个列表 = [(1,2), (3,4) ,(5,6)]。我想同时获得 1、2,然后是 3,4 等等。而不仅仅是第一个或最后一个元素。
          • @Liza for x in my_tuples...?
          猜你喜欢
          • 2016-05-26
          • 1970-01-01
          • 2016-12-19
          • 1970-01-01
          • 2018-04-15
          • 1970-01-01
          • 1970-01-01
          • 2013-10-30
          • 2013-12-03
          相关资源
          最近更新 更多