将关键字无添加到列表

时间:2016-03-03 04:44:44

标签: list python-3.x append

我想在列表中附加关键字None。

  1. 如果输入列表中的元素数量 小于行*列然后用关键字None。
  2. 填充二维列表
  3. 如果输入列表中的元素数大于rows *列 然后忽略额外的元素。
  4. 对于给定try_convert_1D_to_2D([1, 2, 3, 4], 3, 4)的输入,我希望实现这样的目标:[[1, 2, 3, 4], [None, None, None, None], [None, None, None, None]]

    我尝试的是:

    def try_convert_1D_to_2D(my_list, r, c):
        a=r*c
        b=len(my_list)
        if(b >= a):
            l=[my_list[i:i+c] for i in range(0,b,c)]
            return l[0:r]
        else:
            for i in range(0,b,c):
                k=my_list[i:i+c]
                return [k.append(None) for k in a]
    

    输入

    try_convert_1D_to_2D([8, 2, 9, 4, 1, 6, 7, 8, 7, 10], 2, 3) 
    

    我可以实现[[8, 2, 9],[4, 1, 6]]这是正确的。

    有人可以告诉我我做错了什么,请告诉我我能做得最好。谢谢。

1 个答案:

答案 0 :(得分:1)

我指出several issues in the comments,这是一个实际可行的版本:

def try_convert_1D_to_2D(my_list, r, c):
    # Pad with Nones to necessary length
    padded = my_list + [None] * max(0, (r * c - len(my_list)))
    # Slice out rows at a time in a listcomp until we have what we need
    return [padded[i:i+c] for i in range(0, r*c, c)]