Python 将二维数组作为列表返回,但作为生成器对象打印

Python 将二维数组作为列表返回,但作为生成器对象打印,python,multidimensional-array,Python,Multidimensional Array,我编写了一个函数,根据输入的值创建一个矩阵。但是,尽管函数返回一个列表,其输出仍显示为生成器对象。出现这种情况的原因是什么?如何将函数输出打印为列表?谢谢 import random def gnrtRandomMtrcs(row, column): lowercase = list("abcdefghijklmnopqrstuvwxyz") uppercase = list("ABCDEFGJKLMNPRSTUVWXYZ") numbercase = list("012

我编写了一个函数,根据输入的值创建一个矩阵。但是,尽管函数返回一个列表,其输出仍显示为生成器对象。出现这种情况的原因是什么?如何将函数输出打印为列表?谢谢

import random
def gnrtRandomMtrcs(row, column):
    lowercase = list("abcdefghijklmnopqrstuvwxyz")
    uppercase = list("ABCDEFGJKLMNPRSTUVWXYZ")
    numbercase = list("0123456789")
    random.shuffle(lowercase)
    random.shuffle(uppercase)
    random.shuffle(numbercase)
    allcases = []
    allcases.append(item for item in lowercase)
    allcases.append(item for item in uppercase)
    allcases.append(item for item in numbercase)
    random.shuffle(allcases)
    matrices = [[i * j for j in range(column)] for i in range(row)]
    for i in range(row):
        for j in range(column):
            matrices[i][j] = random.choice(allcases)
    return matrices
参数为3和2时的样本输出:

[[<generator object gnrtRandomMtrcs.<locals>.<genexpr> at 0x0337E4F8>,
  <generator object gnrtRandomMtrcs.<locals>.<genexpr> at 0x0337E4F8>], 
 [<generator object gnrtRandomMtrcs.<locals>.<genexpr> at 0x0337E4F8>, 
  <generator object gnrtRandomMtrcs.<locals>.<genexpr> at 0x0337E568>], 
 [<generator object gnrtRandomMtrcs.<locals>.<genexpr> at 0x0337E4F8>, 
  <generator object gnrtRandomMtrcs.<locals>.<genexpr> at 0x0337E4F8>]]
编辑:当for循环写得很长而不是一行时,问题就解决了。但我不明白为什么,因为我认为他们两人的意思是相同的

在这些方面:

allcases.append(item for item in lowercase)
allcases.append(item for item in uppercase)
allcases.append(item for item in numbercase)
    allcases.append(item for item in lowercase)
    allcases.append(item for item in uppercase)
    allcases.append(item for item in numbercase)
我作了以下更正:

for item in lowercase:
    allcases.append(item)
for item in uppercase:
    allcases.append(item)
for item in numbercase:
    allcases.append(item)
最后,它像我想要的那样出现了。

在以下几行中:

allcases.append(item for item in lowercase)
allcases.append(item for item in uppercase)
allcases.append(item for item in numbercase)
    allcases.append(item for item in lowercase)
    allcases.append(item for item in uppercase)
    allcases.append(item for item in numbercase)
您似乎在附加生成器表达式。尝试将括号放在括号内

    allcases.append([item for item in lowercase])
在这些方面:

allcases.append(item for item in lowercase)
allcases.append(item for item in uppercase)
allcases.append(item for item in numbercase)
    allcases.append(item for item in lowercase)
    allcases.append(item for item in uppercase)
    allcases.append(item for item in numbercase)
您似乎在附加生成器表达式。尝试将括号放在括号内

    allcases.append([item for item in lowercase])

如果我们按照你说的做,在前面:[[u',c',…,'p',g']],然后:[[u',c',…,'p',g'],[S',X',…,'u',Z']]我们看到了这样的步骤,但是我希望所有的添加都是相同的列表元素。像这样:['u','c',…,'3','5']@DenizCanTufekci最简单的版本应该是
allcases.extend([lowercase])
-lowercase是一个列表,extend将一个列表粘到另一个列表上(不像append那样制作嵌套列表)。如果我们按照你说的那样做,在:['u','c','p','g']之前,然后:['u','c','p','g','S','X','u','Z']我们可以看到这样的步骤,但是我希望所有的添加都是相同的列表元素。像这样:['u','c',…,'3','5']@DenizCanTufekci最简单的版本是
allcases.extend([小写])
-小写是一个列表,extend将一个列表粘到另一个列表上(不像append那样创建嵌套列表)。