Creating a 2d matrix in python

后端 未结 3 814
粉色の甜心
粉色の甜心 2020-12-06 15:57

I create a 6x5 2d array, initially with just None in each cell. I then read a file and replace the Nones with data as I read them. I create the empty array first because the

3条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-06 16:45

    What's going on here is that the line

    x = [[None]*5]*6
    

    expands out to

    x = [[None, None, None, None, None, None]]*6
    

    At this point you have a list with 6 different references to the singleton None. You also have a list with a reference to the inner list as it's first and only entry. When you multiply it by 6, you are getting 5 more references to the inner list as you understand. But the point is that theres no problem with the inner list, just the outer one so there's no need to expand the construction of the inner lists out into a comprehension.

    x = [[None]*5 for _ in range(6)] 
    

    This avoids duplicating references to any lists and is about as concise as it can readably get I believe.

提交回复
热议问题