我试图在有序列表中添加值,但列表不会更改:
def insert(V, x):
if len(V)!=0:
for i in range( 0 , len(V)-1):
if (V[i]<=x)and(V[i+1]>=x):
V=V[0:i+1]+[x]+V[i+1:len(V)]
print("\nExpected: \n"+ repr(V))
return
V=V+[x]
return
我有这个:
V=[1,2,3,4,5,6,7,8,9,10]
insert(V, 6)
print("\nResult: \n"+ repr(V))enter code here
结果是:
Expected:
[1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10]
Result:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
我可以解决将V设置为return的问题,但是我希望函数在列表上工作。你知道吗
您的函数不会更改
V
。你知道吗在这一行之后,
V
不再是对传递给函数的列表的引用,而是另一个列表。此行不会更改第一个列表,但会创建一个新列表。你知道吗必须
return V
,然后获取结果或调用V
上的方法,例如list.insert()
。你知道吗您可以将值附加到列表中,然后对其进行排序
l.append(值)
l.排序()
你所做的事情可以用
list.insert
简单地完成。你知道吗至于函数不起作用的原因,需要使用完整片赋值更新原始列表,以便通过当前引用
V
更新传递给函数的列表:请注意,RHS(右侧)是一个新的列表对象。单独赋给
V
会将名称/变量重新绑定到新的列表对象。但是,使用切片指定可确保使用新列表中的值更新原始列表。你知道吗相关问题 更多 >
编程相关推荐