/ / Отримання перших елементів у рядку масиву в Python? - пітон, кортежі

Отримання перших елементів на рядок в масиві в Python? - python, кортежі

Нехай "s скажемо, у мене є масив Tuples, s, у вигляді:

s = ((1, 23, 34),(2, 34, 44), (3, 444, 234))

і я хочу повернути ще один кортеж, t, що складається з першого елемента в ряд:

t = (1, 2, 3)

Який би найефективніший метод зробити це? Я, звичайно, міг би просто перебрати через s, але чи є якийсь химерний спосіб зробити це?

Відповіді:

23 за відповідь № 1

Немає.

t = tuple(x[0] for x in s)

5 для відповіді № 2

Метод розуміння списків, наданий Ігнасіо, є найчистішим.

Тільки для ударів, ви також можете зробити:

zip(*s)[0]

*s розширюється s у список аргументів. Отже, це рівнозначно

zip( (1, 23, 34),(2, 34, 44), (3, 444, 234))

І zip повертає n кортежі, де кожен кортеж містить nth елемент із кожного списку.


1 для відповіді № 3
import itertools
s = ((1, 23, 34),(2, 34, 44), (3, 444, 234))
print(next(itertools.izip(*s)))

itertools.izip повертає ітератор. The next функція повертає наступний (і в цьому випадку перший) елемент з ітератора.

У Python 2.x, zip повертає кортеж. izip використовує менше пам'яті, оскільки ітератори не генерують їх вміст до необхідності.

У Python 3 zip повертає ітератор.