【问题标题】:How to create a new list, by appending a value in a certain position on and old list如何通过在旧列表的某个位置附加一个值来创建新列表
【发布时间】:2019-10-26 11:25:55
【问题描述】:

我正在尝试创建一个新列表,它是另一个列表的副本。我想通过更改特定位置的值来修改这个新列表。

我找到了this question,投票最多的答案可以创建一个新列表并添加到旧列表中。这是一个好的开始,但我想决定在哪里添加(在他的版本中,它只是将它添加到列表的末尾)

他有什么:

myList = [10,20,30] 

yourList = myList + [40]

print("your list: " + yourList) 

你的名单:[10,20,30,40]

在这种情况下,我希望能够更改列表中 40 的位置,即

你的名单:[10,40,20,30]

我不确定我会如何去做。谢谢! (这里很新,如果我不清楚,请见谅)

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    使用切片将原始列表拆分为所需的索引,然后将其重新组合在一起。

    例如:

    insert_at = 1
    
    myList = [10,20,30] 
    
    # Uses PEP 448 unpacking generalizations to avoid excess temporary `list`s
    yourList = [*myList[:insert_at], 40, *my_list[insert_at:]]
    
    # Or via concatenation (involves an extra temporary)
    yourList = myList[:insert_at] + [40] + my_list[insert_at:]
    
    print("your list: " + yourList) 
    

    或者,如果您不需要单行,请复制list,然后在副本上调用insert

    yourList = myList[:]  # myList.copy() also works on Python 3
    yourList.insert(insert_at, 40)
    

    【讨论】:

      【解决方案2】:

      要保持相同的列表:

      使用list类的insert方法

      myList.insert(1, 40)
      

      insert(index, element)element 插入列表中index 的位置——根据需要将剩余元素向右移动。

      创建一个新列表:

      new_list = myList.copy()
      new_list.insert(1, 40)
      

      【讨论】:

      • 他们似乎想创建一个新的listinsert 就地修改。您需要显式复制(使用myList[:]myList.copy()),然后在副本上调用insert 以完成这项工作。
      • 虽然这会改变原来的列表,但我想创建一个新列表并保持旧列表不变。我尝试做 yourList = myList.insert(1, 40) 并且它只返回 None (我很确定这意味着我不能用它创建一个新列表?)
      • @MrNielsen:这是 Python 的标准行为;变异方法总是返回None(或者在适当的时候调用它们的实例以外的东西,例如dict.setdefaultdict.pop返回有问题的值),所以你不会被欺骗认为它是一个修改后的副本。
      • @ShadowRanger 这正是我想要的。我该如何去复制列表呢?我不能让 yourList = myList 因为一旦我更改 yourList 它也会更改 myList,但我希望旧列表保持不变。
      • @MrNielsen 我已经编辑了我的答案,包括如何制作列表的副本(在 python 3 中)
      【解决方案3】:

      您可以复制您的列表并将值插入到新列表中,如下所示:

      my_list = [1,2,3,4,5,6]
      my_2_list = my_list.copy()
      

      然后我想在我可以做的位置 3 插入一个 vlue

      my_2_list.insert(3, value)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多