【发布时间】:2013-07-04 12:12:39
【问题描述】:
我对 Python 比较陌生。 我正在尝试提出一个函数,该函数接受一个列表,在该列表中随机添加 +1 到一个值,然后将一个带有修改后的值的新列表作为新索引放置。
例如,如果我有
blank=[]
list_one=[1,2,3,4,5] #
可能的结果可能是
blank=[ [1,2,3,4,5], [1,3,3,4,5],[1,3,3,4,6],[2,3,3,4,6],[2,4,3,4,6] ]
所以该函数获取空白[0],复制并修改它,并将其作为空白[1]返回。类似地,该函数获取空白[1],复制并修改它,并将其返回为空白[2]
这是我的代码:
import random
list_one=[1,2,3,4,5]
def new_function(value):
for i in range(1,value):
list_copy=list_one[:]
blank.append(list_copy)
x=random.choice(blank[i])
y=blank[i].index(x)
blank[i][y]=x+1
return blank
print new_function(4)
"""Yields [ [1,2,3,4,5],[1,3,3,4,5],[2,2,3,4,5],[1,2,4,4,5] ]
(this is the list, blank)"""
我的问题是空白[1]、空白[2]和空白[3]都是空白[0]的修改,当每个索引列表应该是前一个索引列表的修改时。
我在这里做错了什么???
【问题讨论】:
-
请注意,我一直发现使用
list(seq)复制列表比seq[:]更易于阅读。后者对新用户来说可能有点神秘,但它们是等价的。 -
好的,谢谢您的信息。但是为什么我的函数只是在空白中创建第一个列表的修改副本?
-
空白[1] 必须是空白[0] 的修改副本,空白[2] 必须是空白[1] 的修改副本,依此类推。但是我的函数每次只是复制空白[0]并随机修改一个值
标签: python list function random