Python - получить список первого индекса кортежей?

Какой самый компактный способ вернуть следующее:

Учитывая список кортежей, верните список, состоящий из кортежей сначала (или второй, не имеет значения) элементов.

Для:

[(1,'one'),(2,'two'),(3,'three')]

возвращаемый список будет

[1,2,3]

Ответ 1

используйте zip, если вам нужны оба

>>> r=(1,'one'),(2,'two'),(3,'three')
>>> zip(*r)
[(1, 2, 3), ('one', 'two', 'three')]

Ответ 2

>>> tl = [(1,'one'),(2,'two'),(3,'three')]
>>> [item[0] for item in tl]
[1, 2, 3]

Ответ 3

>>> mylist = [(1,'one'),(2,'two'),(3,'three')]
>>> [j for i,j in mylist]
['one', 'two', 'three']
>>> [i for i,j in mylist]
[1, 2, 3]

Это использование списка (см. ссылку). Таким образом, он выполняет итерацию через элементы в mylist, устанавливая i и j на два элемента в кортеже, в свою очередь. Это эффективно эквивалентно:

>>> newlist = []
>>> for i, j in mylist:
...     newlist.append(i)
... 
>>> newlist
[1, 2, 3]

Ответ 4

Вы также можете попробовать это.

dict(my_list).keys()