2011-06-23 260 views
18

对不起,但我是Python新手。我有一个tuples的列表,我想知道我可以如何引用列表中每个tuple的第一个元素。我认为它就像引用元组列表中的元素

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

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

感谢,

特纳

+0

myList中[I] [0]或更多的乐趣:我为我在myList中[0] – phkahler

回答

29

您可以使用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'] 
+0

如果我要访问的元组的所有元素,就像我有一个列表= [(1,2),(3,4),(5,6)]。我想得到1,2,然后3,4等等。而不仅仅是第一个或最后一个元素。 – Liza

+0

@Liza'for my_tuples' ...? –

4

代码

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] 
3

而不是:

first_element = myList[i[0]] 

你可能想:

first_element = myList[i][0] 
3

您还可以使用itemgetter操作:

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

这里所有其他的答案是正确的,但没有解释为什么你正在尝试是错误的。当你做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 
+2

这是页面上的最佳答案。 – dotancohen

+0

我想知道这个答案是否比列表理解答案有更高的计算成本?后者当然有更高的内存成本! –

1

所以,你必须“的元组列表”,让我假定你对某2维矩阵,并在此情况下,一个方便的界面来完成你所需要的是一个numpy提供的。

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

1

这里有一个简单的例子:

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) 
相关问题