Python: list of lists

前端 未结 7 1060
夕颜
夕颜 2020-11-27 04:38

Running the code

listoflists = []
list = []
for i in range(0,10):
    list.append(i)
    if len(list)>3:
        list.remove(list[0])
        listoflists.         


        
相关标签:
7条回答
  • 2020-11-27 05:29

    Lists are a mutable type - in order to create a copy (rather than just passing the same list around), you need to do so explicitly:

    listoflists.append((list[:], list[0]))
    

    However, list is already the name of a Python built-in - it'd be better not to use that name for your variable. Here's a version that doesn't use list as a variable name, and makes a copy:

    listoflists = []
    a_list = []
    for i in range(0,10):
        a_list.append(i)
        if len(a_list)>3:
            a_list.remove(a_list[0])
            listoflists.append((list(a_list), a_list[0]))
    print listoflists
    

    Note that I demonstrated two different ways to make a copy of a list above: [:] and list().

    The first, [:], is creating a slice (normally often used for getting just part of a list), which happens to contain the entire list, and thus is effectively a copy of the list.

    The second, list(), is using the actual list type constructor to create a new list which has contents equal to the first list. (I didn't use it in the first example because you were overwriting that name in your code - which is a good example of why you don't want to do that!)

    0 讨论(0)
提交回复
热议问题