如何更新'或者'覆盖'一个python列表

时间:2014-08-20 17:03:02

标签: python list override overwrite

aList = [123, 'xyz', 'zara', 'abc']
aList.append(2014)
print aList

产生o / p [123, 'xyz', 'zara', 'abc', 2014]

应该怎样做才能覆盖/更新此列表。 我希望o / p是

[2014, 'xyz', 'zara', 'abc']

6 个答案:

答案 0 :(得分:19)

你可以试试这个

alist[0] = 2014

但如果您不确定123的位置,那么您可以尝试这样:

for idx, item in enumerate(alist):
   if 123 in item:
       alist[idx] = 2014

答案 1 :(得分:4)

如果您知道位置,请更换项目:

aList[0]=2014

或者,如果您不知道列表中的位置循环,请找到该项目然后将其替换

aList = [123, 'xyz', 'zara', 'abc']
for i,item in enumerate(aList):
  if item==123:
    aList[i]=2014

print aList

答案 2 :(得分:0)

我认为它更像是pythonic:

aList.remove(123)
aList.insert(0, 2014)

更有用:

def shuffle(list, to_delete, to_shuffle, index):
    list.remove(to_delete)
    list.insert(index, to_shuffle)
    return

list = ['a', 'b']
shuffle(list, 'a', 'c', 0)
print list
>> ['c', 'b']

答案 3 :(得分:0)

我正在学习编码,我发现了同样的问题。我相信更容易解决这个问题的方法就是像@ kerby82所说的那样覆盖列表:

Python中列表中的项目可以使用表单

设置为值

x [n] = v

x 是列表的名称, n 是数组中的索引, v 是您要设置的值。

在你的例子中:

aList = [123, 'xyz', 'zara', 'abc']
aList[0] = 2014
print aList
>>[2014, 'xyz', 'zara', 'abc']

答案 4 :(得分:0)

如果您尝试从同一个数组中获取值并尝试更新它,则可以使用以下代码。

{  'condition': { 
                     'ts': [   '5a81625ba0ff65023c729022',
                               '5a8161ada0ff65023c728f51',
                               '5a815fb4a0ff65023c728dcd']}

如果集合是userData ['condition'] ['ts'],我们需要

    for i,supplier in enumerate(userData['condition']['ts']): 
        supplier = ObjectId(supplier)
        userData['condition']['ts'][i] = supplier

输出

{'condition': {   'ts': [   ObjectId('5a81625ba0ff65023c729022'),
                            ObjectId('5a8161ada0ff65023c728f51'),
                            ObjectId('5a815fb4a0ff65023c728dcd')]}

答案 5 :(得分:0)

我更喜欢没有枚举,而是使用" range"像这样:

for item in range(0, len(alist)):
   if 123 in alist[item]:
      alist[item] = 2014

对于那些不熟悉python的人来说,回顾它可能更具可读性和更聪明。

问候P.