【问题标题】:How to duplicate the list value and append back to the same list? [duplicate]如何复制列表值并附加回同一个列表? [复制]
【发布时间】:2020-02-10 04:36:49
【问题描述】:

例如,如果:

List = [1,2,3,4,5]

我想要这样:

List = [1,1,2,2,3,3,4,4,5,5]

【问题讨论】:

  • 如果List = [3, 1, 4, "allo", 42, False, None] 怎么办?
  • duplicate - 发帖前先解决问题。
  • @Sayse 有时很难找到重复项(查看下面的所有答案)。只需投票关闭(我跟随)
  • @Jean-FrançoisFabre - 确实如此,但是当我找到带有 single google search for "python duplicate list" 的副本时,我很难相信操作人员会付出任何努力
  • @Sayse 我记得最后 130 分是最难获得的。祝你好运:)

标签: python python-3.x list


【解决方案1】:

试试这个:

li = [1,2,3,4,5]

print(sorted(li+li))

【讨论】:

  • 这仅提供此特定示例所需的输出。它将为任何未排序的输入提供错误的输出。试试sorted(li + li, key=li.index)
  • @DeepSpace 真的会杀效率,最好创建索引图,所以sorted(li + li, key={x:i for i,x in enumerate(li)}.get)
  • @juanpa.arrivillaga 或只是 out = [] ; for i in li: li.append(i) ; li.append(i) 简单的 O(n) 没有排序 (O(nlogn))
  • @venki 不要使用那个键功能,它会影响效率。 n * logn 比二次时间好得多。使用索引图。
  • @juanpa.arrivillaga 是的,我就是这么想的。
【解决方案2】:

您可以使用带链的 zip(用于展平):

from itetools import chain

List = list(chain(*zip(List,List)))
print(List)

输出:

[1, 1, 2, 2, 3, 3, 4, 4, 5, 5]

或者您可以使用for 循环:

new_list = []
for n in List:
    new_list.extend([n, n])

List = new_list
print(new_list)

输出:

[1, 1, 2, 2, 3, 3, 4, 4, 5, 5]

【讨论】:

    【解决方案3】:

    你可以zip列表本身:

    [i for t in zip(List, List) for i in t]
    

    【讨论】:

      【解决方案4】:

      也许是这样,如果没有排序的概念:

      myList = [1,2,3,4,5]
      
      for idx in range(0, len(myList)*2, 2):
        myList.insert(idx+1, myList[idx])
      
      print(myList)
      

      【讨论】:

      • 效率很低。
      【解决方案5】:

      您可以使用extend。如果您想保留订单。

      l = [2,1,3,5,6]
      res = []
      for i in l:
          res.extend((i, i))
      print(res)
      

      输出

      [2, 2, 1, 1, 3, 3, 5, 5, 6, 6]
      

      res = []
      l = [None, True, 5, 1, 8]
      for i in l:
          res.extend((i, i))
      print(res)
      

      输出

      [None, None, True, True, 5, 5, 1, 1, 8, 8]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-22
        • 1970-01-01
        • 2018-01-11
        • 2013-09-25
        • 1970-01-01
        • 2017-04-29
        相关资源
        最近更新 更多