Pracuję nad skryptem, w którym mam listę takich krotek ('1','2','3','4')
. na przykład:
list = [('1','2','3','4'),
('2','3','4','5'),
('3','4','5','6'),
('4','5','6','7')]
Teraz trzeba dodać '1234'
, '2345'
, '3456'
i '4567'
odpowiednio na końcu każdej krotki. na przykład:
list = [('1','2','3','4','1234'),
('2','3','4','5','2345'),
('3','4','5','6','3456'),
('4','5','6','7','4567')]
Czy jest to w jakikolwiek sposób możliwe?
Odpowiedzi:
Krotki są niezmienne i nie powinny być zmieniane - do tego służy typ listy. Możesz zastąpić każdą krotkę przez
originalTuple + (newElement,)
, tworząc w ten sposób nową krotkę. Na przykład:t = (1,2,3) t = t + (1,) print t (1,2,3,1)
Ale raczej sugerowałbym używanie list od początku, ponieważ są one szybsze do wstawiania elementów.
I jeszcze jedna wskazówka: nie nadpisuj wbudowanej nazwy
list
w swoim programie, raczej wywołaj zmiennąl
lub jakąś inną nazwę. Jeśli nadpiszesz wbudowaną nazwę, nie możesz jej już używać w bieżącym zakresie.źródło
t += 1,
sqlite3
bazy danych i muszę utworzyć krotkę wartości do dodania (ponieważ wymagana składnia toVALUES (v1, v2, v3, ...)
. W tym przypadku wiedza, jak dodawać wartości do krotka jest bardzo korzystnaNa podstawie składni domyślam się, że to Python. Celem krotki jest to, że jest ona niezmienna, więc musisz zastąpić każdy element nową krotką:
list = [l + (''.join(l),) for l in list] # output: [('1', '2', '3', '4', '1234'), ('2', '3', '4', '5', '2345'), ('3', '4', '5', '6', '3456'), ('4', '5', '6', '7', '4567')]
źródło
W Pythonie nie możesz. Krotki są niezmienne.
Na liście zawierającej możesz jednak zastąpić krotkę
('1', '2', '3', '4')
inną('1', '2', '3', '4', '1234')
krotką.źródło
Jak wspomniano w innych odpowiedziach, po utworzeniu krotki są niezmienne, a lista może lepiej służyć Twoim celom.
To powiedziawszy, inną opcją tworzenia nowej krotki z dodatkowymi elementami jest użycie operatora splat:
new_tuple = (*old_tuple, 'new', 'items')
Podoba mi się ta składnia, ponieważ wygląda jak nowa krotka, więc jasno komunikuje, co próbujesz zrobić.
Korzystając ze splat, potencjalnym rozwiązaniem jest:
list = [(*i, ''.join(i)) for i in list]
źródło
Jak odpowiedzieli inni ludzie, krotki w Pythonie są niezmienne, a jedynym sposobem na ich „zmodyfikowanie” jest utworzenie nowej z dołączonymi elementami.
Ale najlepszym rozwiązaniem jest lista. Gdy trzeba wywołać jakąkolwiek funkcję lub metodę, która wymaga krotki, utwórz krotkę, używając krotki (listy).
źródło
Omówiłem kilka szczegółów związanych z
tuple
ilist
i zrozumiałem, że:Heterogeneous
typem danych kolekcjiAby dołączyć nowy element do krotki, należy go rzucić na niego
list
i wykonaćappend()
na nim operacje, a następnie ponownie przesłać go z powrotem do krotki.źródło
list_of_tuples = [('1', '2', '3', '4'), ('2', '3', '4', '5'), ('3', '4', '5', '6'), ('4', '5', '6', '7')] def mod_tuples(list_of_tuples): for i in range(0, len(list_of_tuples)): addition = '' for x in list_of_tuples[i]: addition = addition + x list_of_tuples[i] = list_of_tuples[i] + (addition,) return list_of_tuples # check: print mod_tuples(list_of_tuples)
źródło
OUTPUTS = [] for number in range(len(list_of_tuples))): tup_ = list_of_tuples[number] list_ = list(tup_) item_ = list_[0] + list_[1] + list_[2] + list_[3] list_.append(item_) OUTPUTS.append(tuple(list_))
WYDAJNOŚĆ jest tym, czego pragniesz
źródło