Ссылка на элемент в списке кортежей
Извините, но я новичок в Python. У меня есть список tuples
, и мне было интересно, как я могу ссылаться, например, на первый элемент каждого tuple
в списке. Я бы подумал, что это что-то вроде
for i in number_of_tuples :
first_element = myList[i[0]]
вы знаете, [list_element[tuple_element]]
? Однако это не является правильным подходом. Любая помощь будет принята с благодарностью.
Спасибо,
Turner
Ответы
Ответ 1
Все остальные ответы здесь правильные, но не объясняют, почему то, что вы пытались, было неправильным. Когда вы выполняете myList[i[0]]
, вы сообщаете Python, что i
является кортежем, и вы хотите, чтобы значение или первый элемент кортежа i
как индекс для myList.
В большинстве языков программирования, когда вам нужен доступ к вложенному типу данных (например, массивы, списки или кортежи), вы добавляете скобки для доступа к самому сокровенному элементу. Первая скобка дает вам расположение кортежа в вашем списке. Вторая скобка дает вам местоположение элемента в кортеже.
Это быстрый пример, который я придумал:
info = [ ( 1, 2), (3, 4), (5, 6) ]
info[0][0] == 1
info[0][1] == 2
info[1][0] == 3
info[1][1] == 4
info[2][0] == 5
info[2][1] == 6
Ответ 2
Вы можете получить список первого элемента в каждом кортеже, используя понимание :
>>> my_tuples = [(1, 2, 3), ('a', 'b', 'c', 'd', 'e'), (True, False), 'qwerty']
>>> first_elts = [x[0] for x in my_tuples]
>>> first_elts
[1, 'a', True, 'q']
Ответ 3
Код
my_list = [(1, 2), (3, 4), (5, 6)]
for t in my_list:
print t
печатает
(1, 2)
(3, 4)
(5, 6)
Цикл повторяется над my_list
и присваивает элементы my_list
t
один за другим. Элементами my_list
являются кортежи, поэтому t
всегда будет кортежем. Чтобы получить доступ к первому элементу кортежа t
, используйте t[0]
:
for t in my_list:
print t[0]
Чтобы получить доступ к первому элементу кортежа в указанном индексе i
в списке, вы можете использовать
print my_list[i][0]
Ответ 4
Вместо
first_element = myList[i[0]]
Вероятно, вы хотите:
first_element = myList[i][0]
Ответ 5
Вы также можете использовать itemgetter оператор:
from operator import itemgetter
data = [('c','r'), (2, 3), ('e'), (True, False),('text','sample')]
map(itemgetter(0), my_tuples)
Ответ 6
Итак, у вас есть "список кортежей", позвольте мне предположить, что вы манипулируете некоторой 2-мерной матрицей, и в этом случае один удобный интерфейс для выполнения того, что вам нужно, это тот, который предоставляется numpy
.
Скажем, у вас есть массив arr = numpy.array([[1, 2], [3, 4], [5, 6]])
, вы можете использовать arr[:, 0]
для получения нового массива всех первых элементов в каждом "кортеже".
Ответ 7
Вот пример:
termList = []
termList.append(('term1', [1,2,3,4]))
termList.append(('term2', [5,6,7,8]))
termList.append(('term3', [9,10,11,12]))
result = [x[1] for x in termList if x[0] == 'term3']
print(result)