Создать кортежи из списка в Python - PullRequest
1 голос
/ 13 марта 2019

У меня есть этот массив:

lst = ['A', 'B', 'C']

Как я могу добавить строку 'D' к каждому элементу и преобразовать каждый набор как кортеж:

lst2=  [('A', 'D'),
          ('B', 'D'),
          ('C', 'D')]

Ответы [ 6 ]

5 голосов
/ 13 марта 2019

Вот так, используя понимание списка :

lst  = ['A', 'B', 'C']
lst2 = [(x, 'D') for x in lst]

lst2
=> [('A', 'D'), ('B', 'D'), ('C', 'D')]

Кстати, плохая идея вызывать переменную list, которая конфликтует со встроенной функцией. Я переименовал его.

3 голосов
/ 13 марта 2019

альтернативным решением является использование zip_longest

from itertools import zip_longest
list(zip_longest(['A', 'B', 'C'], [], fillvalue='D'))

результат будет:

[('A', 'D'), ('B', 'D'), ('C', 'D')]
1 голос
/ 13 марта 2019

Вы можете использовать функцию product():

from itertools import product

lst = ['A', 'B', 'C']

list(product(lst, 'D'))
# [('A', 'D'), ('B', 'D'), ('C', 'D')]
1 голос
/ 13 марта 2019
list1 = ['A', 'B', 'C']
list2 = []
for i in list1:
    list2.append((i, 'D'))
print(list2)
1 голос
/ 13 марта 2019

Другой вариант с использованием почтового индекса:

x = ['A', 'B', 'C']
res = list(zip(x,'D'*len(x)))
1 голос
/ 13 марта 2019
list2 = [(i, 'D') for i in list]

(кроме того факта, что list - очень плохое имя переменной)

...