Подтвердить что ты не робот

Ссылка на элемент в списке кортежей

Извините, но я новичок в Python. У меня есть список tuples, и мне было интересно, как я могу ссылаться, например, на первый элемент каждого tuple в списке. Я бы подумал, что это что-то вроде

for i in number_of_tuples :
  first_element = myList[i[0]]

вы знаете, [list_element[tuple_element]]? Однако это не является правильным подходом. Любая помощь будет принята с благодарностью.

Спасибо,

Turner

4b9b3361

Ответ 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)