Доступ к значению в кортеже, который находится в списке
[(1,2), (2,3), (4,5), (3,4), (6,7), (6,7), (3,8)]
Как мне вернуть 2-е значение из каждого кортежа внутри этого списка?
желаемый результат:
[2, 3, 5, 4, 7, 7, 8]
5 ответов:
Игнасио-это то, что вы хотите. Однако, поскольку кто-то также изучает Python, позвольте мне попытаться рассечь его для вас... Как уже упоминалось, это понимание списка (см. DiveIntoPython3, например). Вот несколько моментов:
[x[1] for x in L]
- обратите внимание на
[]' s вокруг строки кода. Это то, что определяет список. Это говорит вам, что этот код возвращает список, так что этоlistтип. Следовательно, этот метод называется " Список понимание."- L-это ваш исходный список. Поэтому вы должны определить
L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]перед выполнением вышеуказанного кода.x- это переменная, которая существует только в понимании - попробуйте получить доступ кxвне понимания, или типаtype(x)после выполнения вышеуказанной строки, и он скажет вамNameError: name 'x' is not defined, аtype(L)возвращает<class 'list'>.x[1]указывает второй элемент в каждом из кортежей, тогда какx[0]хотел бы отметить к каждому из первых пунктов.- таким образом, эта строка кода буквально читает "вернуть второй элемент в кортеже для всех кортежей в списке L."
трудно сказать, сколько вы пытались решить проблему до того, как задать вопрос, но, возможно, вы просто не были знакомы с пониманием? Я бы потратил некоторое время на чтение Глава 3 DiveIntoPython, или любой ресурс по пониманиям. Удача.
понимание списка-это абсолютно способ сделать это. Другой способ, что должны быть быстрее
mapиitemgetter.import operator new_list = map(operator.itemgetter(1), old_list)в ответ на комментарий, что ОП не смог найти ответ на google, я укажу супер наивный способ сделать это.
new_list = [] for item in old_list: new_list.append(item[1])используется:
- объявление переменной для ссылки на пустой список.
- цикл for.
- вызов
appendметод на a список.если кто-то пытается выучить язык и не может собрать эти основные части для себя, то они должны рассматривать его как упражнение и делают это сами, даже если это займет двадцать часов.
нужно научиться думай о том, чего хочешь и сравните это с доступные инструменты. Каждый элемент в моем втором ответе должен быть рассмотрен в базовом учебнике. вы не можете научиться программировать не читая ни одного.
вы также можете использовать последовательность распаковки с
zip:L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)] _, res = zip(*L) print(res) # (2, 3, 5, 4, 7, 7, 8)Это также создает кортежа!--3--> из отброшенных первых элементов. Извлечение только второго возможно, но более подробно:
from itertools import islice res = next(islice(zip(*L), 1, None))
или вы можете использовать
pandas:>>> import pandas as pd >>> L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)] >>> df=pd.DataFrame(L) >>> df[1] 0 2 1 3 2 5 3 4 4 7 5 7 6 8 Name: 1, dtype: int64 >>> df[1].tolist() [2, 3, 5, 4, 7, 7, 8] >>>или
numpy:>>> import numpy as np >>> L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)] >>> arr=np.array(L) >>> arr.T[1] array([2, 3, 5, 4, 7, 7, 8]) >>> arr.T[1].tolist() [2, 3, 5, 4, 7, 7, 8] >>>