kuo list prastesnis už tuple ?

D
  • 10 Grd '07

čia toks pusiau filosofinis klausimas...
iš principo list ir tuple atrodo labai panašiai
http://www.wellho.net/solutions/python- ... onary.html

atrodo, kad tuple turi tik papildomą savybę vienoj komandoj išvardinti kelis kintamuosius, reikšmes (ypač priskyrimui)
a, b, c = 5, 7, 21
funkcija(arg1, 3, 'pieva' argx)

bet gi čia sėkmingai galėtų būti apiformintas list'as...
pvz tokį funkcionalumą php netgi vdina list http://lt2.php.net/list

ar gal visgi list ir tuple saugojimas atmintyje kažkuo skiriasi?

D
  • 10 Grd '07

tuple yra konstantinis. Jo negalima keisti. Pvz.:

a = (1, 2, 3)
a.append(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
a[0] = 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

D
  • 10 Grd '07

tai kodė negalima būtų visur vietoj tuple naudoti/apiforminti list'ą?

K
  • 13 Grd '07

Jeigu zn kad reiks duomenis naudok list'a, jei nea tuple ..

Naudodamas tuple taupai resursus

S
  • 2 Sau '08
>>> t = tuple((1, 2, 3))
>>> t
(1, 2, 3)
>>> t[1] = 8
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> t = list(t)
>>> t[1] = 8

Tuple taip pat užtikrina duomenų vientisumą. Jei pavyzdžiei siunti tuple per funkcijas, esi užtikrintas, kad niekas siunčiamų doumenų nepakeis.

0
  • 24 Vas '09

@dz0

Na jau tau praktiskai atsake As tik duosiu labai gera pavyzduka, kur fiziskai list`o niekaip neprakisi, o tuple - lenda
Va kodas:

{[0,1]:1}
Gausi tokia klaida:
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
{[0,1]:1}
TypeError: unhashable type: 'list'

O su tuple problemu nera-

{(0,1):1}
Nes kartais saugoti tuple kaip dictionary kej`u yra tikrai naudinga.
Pvz. jei nori suindeksuoti taskus plokstumoje isreikstus kaip x,y koordinaciu pora. Aisku galima apsirasyti atskira klase tam reikalui, bet klases ne visada reikalingos.