Преобразование кортежей в кортеже в списки в списке - PullRequest
1 голос
/ 27 апреля 2020

Я на последнем шаге своего кода, где я должен изменить свои любимые ноутбуки обратно на список, который уже находится в порядке убывания.

Кортежи в списке кортежей представляют (ranking score, (name, company, screen size)).

Например:

tuple_lst = [(20,('Elitebook','HP',13)),(10,('SurfacePro','Microsoft',13)),(5,('MacBook Air','Apple',13))]

Мой ожидаемый результат:

[['Elitebook','HP',13],['SurfacePro','Microsoft',13],['MacBook Air','Apple',13]]

Я пытался использовать list() и создавать циклы for, но все еще не смог это сделать .

Любая помощь очень ценится.

Ответы [ 5 ]

3 голосов
/ 27 апреля 2020

Попробуйте это ниже, используя понимание списка:

tuple_lst = [(20,('Elitebook','HP',13)),(10,('SurfacePro','Microsoft',13)),(5,('MacBook Air','Apple',13))]

print([list(x[1]) for x in tuple_lst])
2 голосов
/ 27 апреля 2020

вы делаете что-то подобное

new_lst = [list(i[1]) for i in tuple_lst]

вывод

[['Elitebook', 'HP', 13],
 ['SurfacePro', 'Microsoft', 13],
 ['MacBook Air', 'Apple', 13]]

1 голос
/ 27 апреля 2020

Хорошим способом является распаковка кортежей:

>>> tuple_lst = [(20,('Elitebook','HP',13)),(10,('SurfacePro','Microsoft',13)),(5,('MacBook Air','Apple',13))]
>>> [list(y) for _, y in tuple_lst]
[['Elitebook', 'HP', 13], ['SurfacePro', 'Microsoft', 13], ['MacBook Air', 'Apple', 13]]
1 голос
/ 27 апреля 2020

Попробуйте это:

tuple_lst = [(20,('Elitebook','HP',13)),(10,('SurfacePro','Microsoft',13)),(5,('MacBook Air','Apple',13))]
res = []

for tup in tuple_lst:
    res.append(list(tup[1]))

print(res)

Вывод будет: -

[['Elitebook','HP',13],['SurfacePro','Microsoft',13],['MacBook Air','Apple',13]]
0 голосов
/ 27 апреля 2020

Вот решение в одну строку для вашей проблемы:

    tuple_lst = [(20,('Elitebook','HP',13)),(10,('SurfacePro','Microsoft',13)),(5,('MacBook Air','Apple',13))]
    tuple_lst = list(map(lambda x:list(x[1]),tuple_lst))
    print(tuple_lst)

Вывод: [['Elitebook', 'HP', 13], ['SurfacePro', 'Microsoft', 13], [ «MacBook Air», «Apple», 13]]

...