【问题标题】:Appending specific integers to nested lists - Python将特定整数附加到嵌套列表 - Python
【发布时间】:2015-08-10 13:00:44
【问题描述】:

我有一个嵌套列表,A = [[1, 2, 3], [5, 2, 7], [4, 8, 9]]。我想在list A 中添加数字1, 2, 3A = [[1, 2, 3, 1], [5, 2, 7, 2], [4, 8, 9, 3]] 等等(这只是一个较短的版本)。我用我写的代码尝试了同样的方法:

i = 0
j = 0
#number_nests = number of nested lists
for i in range(0, number_nests):
    for j in A:
        j.append(i)

print(A)

这是我得到的输出,因为我是新手,所以我有点卡住了: [[1, 90, 150, 0, 1, 2, 3], [2, 100, 200, 0, 1, 2, 3], [4, 105, 145, 0, 1, 2, 3], [3, 110, 190, 0, 1, 2, 3]]。我试图在没有 numpy 的情况下做到这一点。

【问题讨论】:

  • 不需要range(0, number_nests)0range中的默认start。所以简单的range(number_nests)

标签: python list python-3.x nested append


【解决方案1】:
A = [[1, 2, 3], [5, 2, 7], [4, 8, 9]]
i=1
for val in A:
    val.append(i)
    i += 1

【讨论】:

    【解决方案2】:

    使用enumerate 简单地迭代外部列表和索引:

    for i, elem_list in enumerate(A, start=1):
        elem_list.append(i)
    

    【讨论】:

      【解决方案3】:

      您可以使用enumerate 内置函数,开始参数为1 来获取当前索引。

      A = [[1, 2, 3], [5, 2, 7], [4, 8, 9]]
      
      print([val+[i] for i, val in enumerate(A, 1)])
      

      使用map内置函数

      在 python 2.x 中

      print map(lambda x,y: x+[y],  A, range(1, len(A)+1))
      

      在 python 3.x 中

      print(list(map(lambda x,y: x+[y], A, range(1, len(A)+1))))
      

      【讨论】:

        【解决方案4】:
        A = [[1, 2, 3], [5, 2, 7], [4, 8, 9]]
        B = [1, 2, 3]
        print [A[i]+[B[i]] for i in range(len(A))]
        #Output[[1, 2, 3, 1], [5, 2, 7, 2], [4, 8, 9, 3]]
        

        【讨论】:

          【解决方案5】:

          你只需要一个循环就可以为A中的每个列表添加一个数字:

          for i in range(1, len(A)+1):
              A[i].append(i)
          

          注意:范围应从 1 开始

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-12-01
            • 2017-11-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-02-10
            • 2019-03-19
            • 2012-11-25
            相关资源
            最近更新 更多