Ответ 1
используйте zip, если вам нужны оба
>>> r=(1,'one'),(2,'two'),(3,'three')
>>> zip(*r)
[(1, 2, 3), ('one', 'two', 'three')]
Какой самый компактный способ вернуть следующее:
Учитывая список кортежей, верните список, состоящий из кортежей сначала (или второй, не имеет значения) элементов.
Для:
[(1,'one'),(2,'two'),(3,'three')]
возвращаемый список будет
[1,2,3]
используйте zip, если вам нужны оба
>>> r=(1,'one'),(2,'two'),(3,'three')
>>> zip(*r)
[(1, 2, 3), ('one', 'two', 'three')]
>>> tl = [(1,'one'),(2,'two'),(3,'three')]
>>> [item[0] for item in tl]
[1, 2, 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]
Вы также можете попробовать это.
dict(my_list).keys()