比方說,我有元組的數組,S,在形式:在Python中獲取數組中每行的第一個元素?
s = ((1, 23, 34),(2, 34, 44), (3, 444, 234))
,我想返回另一個元組,T,每排由第一要素:
t = (1, 2, 3)
這將是最有效的方法來做到這一點?我當然可以通過s來迭代,但有沒有這樣做的方式?
比方說,我有元組的數組,S,在形式:在Python中獲取數組中每行的第一個元素?
s = ((1, 23, 34),(2, 34, 44), (3, 444, 234))
,我想返回另一個元組,T,每排由第一要素:
t = (1, 2, 3)
這將是最有效的方法來做到這一點?我當然可以通過s來迭代,但有沒有這樣做的方式?
號
t = tuple(x[0] for x in s)
通過伊格納西奧給出的列表解析方法是最乾淨。
只是踢,你也可以這樣做:
zip(*s)[0]
*s
擴展s
到的參數列表。因此,它是相當於
zip((1, 23, 34),(2, 34, 44), (3, 444, 234))
而且zip
返回n
元組,每個元組包含來自每個列表中nth
項目。
import itertools
s = ((1, 23, 34),(2, 34, 44), (3, 444, 234))
print(next(itertools.izip(*s)))
itertools.izip
返回一個迭代器。 next
函數返回迭代器中的下一個(在本例中爲first)元素。
在Python 2.x中,zip
返回一個元組。 izip
使用較少的內存,因爲直到需要迭代器不產生它們的內容。
在Python 3 zip
返回迭代器。
其實,這是一個生成器表達式,而不是一個列表理解。 – 2010-01-13 04:40:28