#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’, ‘Компьютер»)]