Изоляция / индексирование / ранжирование через набор кортежей объекта списка - PullRequest
0 голосов
/ 15 февраля 2020

Так что, в основном, у меня есть такой набор кортежей, как этот.

tuple_set = [('name1', 'score'), ('name2', 'score'), ('name3', 'score')]

В основном это специфический список c в большем словаре имен / оценок. Мне нужно изолировать name1, name2 и name3 во что-то, что я могу перебирать как список.

Это также может работать, если я могу проходить через него, но я не могу взять диапазон объекта списка / tupleset ,

Кроме того, добавление к списку, подобному этому, не будет работать, потому что он только поместит список name1s

a_list = []

for stuff in tuple_set:
    a_list.append(tuple_set[0][0])

output: a_list = ["name1", "name1", "name1"]

Кто-нибудь знает решение?

Ответы [ 3 ]

1 голос
/ 15 февраля 2020

Ваш l oop никогда не использует переменную итерации, он просто добавляет один и тот же элемент снова и снова. На самом деле используйте переменную l oop (в идеале через распаковку с полезными именами переменных), и все работает:

for name, score in tuple_set:
    a_list.append(name)

или в одну строку как list понимание:

a_list = [name for name, score in tuple_set]
0 голосов
/ 15 февраля 2020

ваш код будет работать с небольшими изменениями, если вы думаете, что во время итерации по вашему tuple_list у вас есть доступ к каждому элементу, один за итерацией, поэтому за одну итерацию вы можете получить свой первый элемент из переменной stuff name

a_list = []

for stuff in tuple_set:
    a_list.append(stuff[0])

может быть, вы запутались, потому что можете использовать каждый индекс элемента для задания:

a_list = []

for index in range(tuple_set):
    a_list.append(tuple_set[index][0])

вы также можете распаковать каждый элемент в другом 2 (имя и оценка), как предлагал @ShadowRanger:

for name, score in tuple_set:
    a_list.append(name)

, если вам нравится, когда работа выполняется в одну строку, вы можете использовать понимание списка:

a_list = [s[0] for s in tuple_set]

или:

a_list = [n for n, _ in tuple_set]
0 голосов
/ 15 февраля 2020

Вы также можете решить эту проблему, используя подход zip, так что-то вроде этого:

 print(list(list(zip(*tuple_set))[0]))

* используется для распаковки аргументов в tuple_set конкретно для первого элемента, т.е. доступа к 0 и получаю только names назад

Надеюсь, это поможет:)

...