The only differences are that tuples are immutable and that lists have extra methods.

Is there ever a strong need for list-type data to be immutable? Evough to justify a whole extra data-type in the language?

Should they release a python 4 with it removed?

The only thing I can think of is as a default function parameter. This function is okay:

def dothings(a=(1,2)):
    print(a)
    a = (a[0], 3)

But this function misbehaves the second time it is called:

def dothings(a=[1,2]):
    print(a)
    a[1] = 3

But IMO the “mutable arguments” thing is another bug to be fixed in a hypothetical python 4. And even in python 3 you just write the function the recommended way, so there is not such a big problem.

def dothings(a=None):
    if a is None:
        a = [1, 2]
    print(a)
    a[1] = 3

The Python devs are clever guys though. There must be some really important reason to maintain both types?

  • birokop@lemmy.ml
    link
    fedilink
    arrow-up
    3
    ·
    3 years ago

    Don’t really know python but i think your lists are quite performance heavy because of all the features, while tuples are closer to arrays in a language like java, and are simple memory blocks that can be worked with much faster. Don’t take my word for it though :P

    • roastpotatothief@lemmy.mlOP
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      3 years ago

      This could be the right answer. I know tuples use slightly less memory. But I’m not if that’s so important. I don’t think programs ever need to iterate over 1 million tuple entries, where speed or memory would be important.

      • ksynwa@lemmy.ml
        link
        fedilink
        arrow-up
        0
        ·
        3 years ago

        One important reason why tuples exist is that unlike lists they are immutable. So they are hashable and can be used as keys in dictionaries among other things.