Wstawianie elementu w krotce [duplikat]

To pytanie ma już odpowiedź tutaj:

Tak, rozumiem, że krotki są niezmienne, ale sytuacja jest taka, że muszę wstawić dodatkową wartość do każdej krotki. Więc jednym z przedmiotów jest kwota, muszę dodać nowy przedmiot obok niego w innej walucie, jak więc:

('Product', '500.00', '1200.00')
Możliwe? Dzięki!
Author: 3zzy, 2010-02-22

8 answers

Możesz wrzucić go do listy, wstawić element, a następnie wrzucić go z powrotem do krotki.

a = ('Product', '500.00', '1200.00')
a = list(a)
a.insert(3, 'foobar')
a = tuple(a)
print a

>> ('Product', '500.00', '1200.00', 'foobar')
 46
Author: swanson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-22 07:05:46

Ponieważ krotki są niezmienne, spowoduje to utworzenie nowej krotki. Po prostu umieść go z powrotem tam, gdzie masz stary.

sometuple + (someitem,)
 41
Author: Ignacio Vazquez-Abrams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-22 07:07:03

Koniecznie musisz zrobić nową krotkę - wtedy możesz zmienić nazwę (lub jakiekolwiek odniesienie) ze starej krotki na nową. Operator += może pomóc (jeśli było tylko jedno odniesienie do starej krotki), np.:

thetup += ('1200.00',)
Czy dodawanie i rebinding za jednym zamachem.
 18
Author: Alex Martelli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-22 07:09:40
def tuple_insert(tup,pos,ele):
    tup = tup[:pos]+(ele,)+tup[pos:]
    return tup

tuple_insert(tup,pos,9999)

Tup: tuple
pos: Position to insert
ele: Element do wstawienia

 14
Author: Vidya Sagar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-22 18:18:47

W przypadku, gdy nie dodajesz do końca krotki

>>> a=(1,2,3,5,6)
>>> a=a[:3]+(4,)+a[3:]
>>> a
(1, 2, 3, 4, 5, 6)
>>> 
 7
Author: John La Rooy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-22 07:10:24

Jednym ze sposobów jest przekonwertowanie go na listę

>>> b=list(mytuple)
>>> b.append("something")
>>> a=tuple(b)
 3
Author: ghostdog74,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-22 07:07:23

T = (1,2,3,4,5)

T = t + (6,7)

Wyjście:

(1,2,3,4,5,6,7)

 3
Author: hardik patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-03 10:25:39

Możesz też kodować w prosty sposób:

T += (new_element,)
 2
Author: Vivek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-08 04:19:26