首页 > 解决方案 > 我希望输出类似于 [[1,2,3,4,5,6,7,8,9,10],[2,4,6,8,10,12...18,20] ,[3,6,9...27,30].....[9,18,27..90]]

问题描述

我正在使用 python。我需要得到我在底部提到的输出。这是我尝试的方式。

 L = [i for i in range(1,11)]
    print(L)
    p = []
    p.extend(L for _ in range(10))
    #print(p)
    for _ in range(10):
        for i in range(10):
            p[_][i] = (_+1)*p[_][i]
    print(p)
and this is the output I got.

Output:[[3628800, 7257600, 10886400, 14515200, 18144000, 21772800 25401600, 29030400, 32659200, 36288000], [3628800, 7257600, 10886400, 14515200, 18144000, 21772800, 25401600, 29030400, 32659200, 36288000], [3628800, 7257600 , 10886400, 14515200, 18144000, 21772800, 25401600, 29030400, 32659200, 36288000], [3628800, 7257600, 10886400, 14515200, 18144000, 21772800, 25401600, 29030400, 32659200, 36288000], [3628800, 7257600, 10886400, 14515200, 18144000 , 21772800, 25401600, 29030400, 32659200, 36288000], [3628800, 7257600, 10886400, 14515200, 18144000, 21772800, 25401600, 29030400, 32659200, 36288000], [3628800, 7257600, 10886400, 14515200, 18144000, 21772800, 25401600, 29030400 ,32659200,36288000],[3628800,7257600,10886400,14515200,18144000,21772800,25401600,29030400,32659200,32659200,36288000]14515200,18144000,21772800,25401600,29030400,32659200,36288000],[3628800,7257600,10886400,10886400,14515200,14515200,14515200,1814400 00

我希望输出像

[[1,2,3,4,5,6,7,8,9,10],[2,4,6,8,10,12...18,20],[3,6,9...27,30].....[9,18,27..90]]

标签: pythonlistloopsnested-loopsnested-lists

解决方案


有几个问题: 不要将 _ 用作变量名,它用于您不会重用的变量。

由于这条线,您遇到了这个问题:

p.extend(L for _ in range(10))

p 是对 L 的引用列表。所以当你这样做时:

p[_][i] = (_+1)*p[_][i]

您修改了 L,因此修改了 p 中的所有列表。

您的代码已修复:

p = []
p.extend(list(range(1,11)) for _ in range(10))

for i in range(10):
    for j in range(10):
        p[i][j] = (i+1)*p[i][j]
print(p)

但是,有一种更简单的方法可以做到这一点:

p  = [ list(range(i, i*11, i )) for i in range(1,10)]

推荐阅读