python - 将二维数组作为列表返回,但作为生成器对象打印
问题描述
我编写了一个函数,它根据输入的值创建一个矩阵。然而,尽管该函数返回一个列表,但其输出显示为生成器对象。这种情况的原因是什么?如何将函数输出打印为列表?谢谢!
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>]]
但我希望输出是这样的:
[['L', '0'],['2', '6'],['b', 'K']]
编辑:当for循环以很长的方式编写而不是一行时,问题就解决了。但我不明白为什么,因为我认为它们都意味着相同的情况。
在这些行中:
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])
推荐阅读
- python - AttributeError:“模块”对象没有属性“get_compile_flags”
- javascript - UpdatePanel 中的 javascript 在回发时不起作用
- python - 如何从字典中返回值列表?
- java - 将包级 Java 注释转换为 Kotlin
- amazon-web-services - 使用 Google Firebase 进行物联网设备管理/入职
- python-3.x - tkinter中带有网格的位置小部件
- excel - 从 Excel 发送大量电子邮件
- postgresql - PostgreSQL 从两个表中获取匹配并保存到磁盘
- matlab - 如何在 MATLAB 中绘制显示非共形映射的复值函数?
- python - WIFI Pineapple Nano 和 RPi GPIO