Python добавляет столбец со значениями в список кортежей

#python

Вопрос:

У меня есть список кортежей на python, который выглядит так:

[(«1», «Сервер»), («2», «Компьютер»)]

и я хочу добавить столбец с invoicenr, чтобы он выглядел так: [(’44’, ‘1’, ‘Сервер’), (’44’, ‘2’, ‘Компьютер»)]

Комментарии:

1. Создайте из этого новый список. Поскольку кортежи не изменчивы. Или вы можете перезаписать содержимое списка с помощью индексов

Ответ №1:

Вы можете сделать что-то вроде:

 data=[('1', 'Server'), ('2', 'Computer')]

res=[('44',)   x for x in data]
 

выход из res :

 [('44', '1', 'Server'), ('44', '2', 'Computer')]
 

Ответ №2:

Использование понимания списка:

 old = [('1', 'Server'), ('2', 'Computer')]

invoicenr = ['44', '44']

new = [(a, *b) for a, b in zip(invoicenr, old)]
 

выход:

 [('44', '1', 'Server'), ('44', '2', 'Computer')]
 

Комментарии:

1. Или еще менее многословно: [(a, *b) for a, b in ...] .

2. @schwobaseggl Спасибо, я не был уверен, как использовать повторяемую распаковку * , поэтому я поставил ее как a, b, c. Но да, так лучше 🙂 Я отредактировал свой ответ

3. Ваш оригинал также очень корректен, так как он более явный, что сделает его более читабельным, особенно при семантическом именовании переменных. Однако распаковка работает в более общем плане с точки зрения длины кортежа.

Ответ №3:

Кортежи по определению неизменяемы, поэтому прямое добавление к исходному кортежу невозможно. Однако для достижения описанного вами результата вам придется пройти через следующее:

1 — Пройдитесь по исходному списку, вы получите результат, который будет кортежем.

2 — Преобразуйте кортеж в список

3 — Добавьте поле (путем добавления или любым другим способом, который вы хотите)

4 — Преобразуйте список в кортеж

5 — Повторно добавьте новые кортежи в новый объект.

Код может выглядеть примерно так:

 newBigList = []
For singleTuple in myListTuple:
    newList = list(singleTuple)
    newList.append("someValue")
    newTuple = tuple(newList)
    newBigList.append(newTuple)
 

Ответ №4:

Создайте новый список с добавлением номера счета-фактуры:

 new_list = [(invoicenr,)   item for item in old_list]
 

Обратите внимание на запятую; необходимо отметить эту часть выражения как кортеж, а не просто круглые скобки для порядка операций.

Ответ №5:

Похоже, меня, возможно, избили до поста, но вот один из способов.

 x1 = [('1', 'Server'), ('2', 'Computer')]
x2 = ('44',)

[x2   x for x in x1]
 

создайте x2 кортеж, добавив столбец, затем используйте понимание списка

Ответ №6:

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

 A = [('1', 'Server'), ('2', 'Computer')]
B = ['44','44']
C= [tuple([b]   list(a)) for b,a in zip(B, A)]
print(C)
 

[(’44’, ‘1’, ‘Сервер’), (’44’, ‘2’, ‘Компьютер»)]