我正在尝试在python中编写一个函数,它接受一个列表x,取一个基于零的索引n和另一个值num,然后在该位置指定该值:
我今天早上想到,我们不能像其他一些编程语言中的数组一样直接进行分配,例如
x=[] //an empty array
x[0]="some value"
所以我搜索了一个替代方案并找到了list的insert函数,它接受2个参数并在指定位置插入值,如
>>> x=[0]
>>> x.insert(123,"as")
>>> x
[0, 'as']
>>> x[0]
0
>>> x[1]
'as'
>>> x.insert(0,1)
>>> x
[1, 0, 'as']
>>> len(x)
3
>>> x.insert(4,"dfsdf")
>>> x
[1, 0, 'as', 'dfsdf']
>>> x.insert(4,"dfsdf")
>>> x
[1, 0, 'as', 'dfsdf', 'dfsdf']
这个函数的问题在于,如果该元素已经存在于列表中,它会创建一个副本 - 这是
不会发生的事情x[0]="some -value"
//if the value is not present it appends the value otherwise it overwrites the value at x[0]
所以我写了另一个函数insertAt,它将检查一个给定的列表 - 如果该值已经存在于该位置n-如果不存在它将插入否则它将返回相同的列表。在这里:
def insertAt(x,n,num):
if n>=len(x):
return x.insert(len(x),num)
elif n<len(x) and x[n] != num:
return x.insert(n,num)
else:
return x
这是非常自我解释 - 除了它总是返回我没有 - 为什么它没有返回有效值?
答案 0 :(得分:0)
如果要返回修改后的列表,请尝试此操作。
def insertAt(x,n,num):
if n>=len(x):
x.insert(len(x),num)
return x
elif n<len(x) and x[n] != num:
x.insert(n,num)
return x
else:
return x
答案 1 :(得分:0)
如果您想要一份清单副本,为什么不试试?
def insertAt(l, n, num):
if len(l)<n or l[n] != num:
return l[:n]+[num]+l[n:]
return l
答案 2 :(得分:0)
UITableViewCell
没有工作。这里,第一个语句没有分配内存。然后你试图为未分配的内存分配一些东西。这怎么可能?如果您将列表定义为,
x=[] //an empty array
x[0]="some value"
然后尝试直接分配,它会工作。
x = [0]*10
这应该有效。在您的情况下,如果您想将字符串存储为字符列表,您可以执行以下操作,
x[2] = 2