python - 二维数组结构python

标签 python multidimensional-array

我正在上 python 类(class),但没有 python 经验。导师只教文档,拒绝给出代码示例。我了解 C++,但我对 Python 感到非常沮丧,因为我基本上是在自学。

我想打开一个文本文件,每行包含一串随机字符。例如,长度可以是 8、10、15 或 20 个字符。它必须是灵活的。文本文件中可以有未指定数量的字符串(行)。

文本文件可能如下所示:

HGAMONIHRA
AOMOKAWONS
NFROLBOBDN
ARFSIHCAGE
LNIEEWONOK
GOLFUNDTHC
KOCATAOHBI
AMRERCGANH
SLGFAMALLC
ALLIGATORX

我只是想弄清楚如何将每个字符放入类似数组的结构中,以便我可以像二维数组一样访问它 --> 例如我的数组 [2][3]。

我用字典练习只是为了测试行为。我认为我可以使用带有嵌套 for 循环的字典,然后使用元组作为键并将字符串中解析的 char 作为值传递。我在想这可能行得通,但是当我尝试使字典只用一行时,我的打印语句只给我一个键和一个值,而不是列表。我真的很困惑。我知道这很痛苦,但有人可以简单地教我吗? python 在我嘴里留下了难闻的味道。

这是我对一个文本文件的一行的测试代码:

count = 0
text = open("puzzle.txt")
line = text.readline()
for i in line:  #this is probably the problem
    mydict = dict()
    mydict.update({count:line[count-1]}) #was hoping to make many keys and values.
    count += 1

print mydict.values() #want to see there are multiple dict values, each as a char.
print count #just checking to see what count value was

有人可以教我吗,因为我的老师不会,而且我真的很想学习。

最佳答案

你的代码乍一看有一个明显的问题 - 你每次通过循环都将 mydict 重置为一个空的字典,你的行:

    mydict = dict()

如果您将其移动到紧接在循环之前,您可以进一步测试以查看是否还有其他问题需要修复。

但是,有一种更直接的方法可以实现您想要的:

>>> with open("puzzle.txt") as f:
...     puzzle = [list(line.strip()) for line in f]

这将打开您的文件 puzzle.txt 并将其分配给变量 f,然后将文件中的每一行读入一个字符串变量 line,去除所有空格(包括末尾的换行符),将生成的字符串转换为字符列表,最后将这些列表中的每一个收集到另一个列表中,并将其分配给变量 puzzle。最后,因为所有这些都是在 with 语句中完成的,所以文件会自动关闭。

上面的代码中有几个重要的 Python 概念:

如果使用 pprint 可以更清楚地看到这段代码的结果pprint模块中的函数:

>>> from pprint import pprint
>>> pprint(puzzle)
[['H', 'G', 'A', 'M', 'O', 'N', 'I', 'H', 'R', 'A'],
 ['A', 'O', 'M', 'O', 'K', 'A', 'W', 'O', 'N', 'S'],
 ['N', 'F', 'R', 'O', 'L', 'B', 'O', 'B', 'D', 'N'],
 ['A', 'R', 'F', 'S', 'I', 'H', 'C', 'A', 'G', 'E'],
 ['L', 'N', 'I', 'E', 'E', 'W', 'O', 'N', 'O', 'K'],
 ['G', 'O', 'L', 'F', 'U', 'N', 'D', 'T', 'H', 'C'],
 ['K', 'O', 'C', 'A', 'T', 'A', 'O', 'H', 'B', 'I'],
 ['A', 'M', 'R', 'E', 'R', 'C', 'G', 'A', 'N', 'H'],
 ['S', 'L', 'G', 'F', 'A', 'M', 'A', 'L', 'L', 'C'],
 ['A', 'L', 'L', 'I', 'G', 'A', 'T', 'O', 'R', 'X']]

...您可以完全按照您在问题中提出的那样访问单个角色:

>>> puzzle[2][3]
'O'

关于python - 二维数组结构python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14805466/

相关文章:

python - 如何实现黑屏和网格绘制?

python - 如何允许 f() 取小数值

javascript - 将 ndarray 转换为数组的数组

c - 为什么在为二维数组分配指针时需要指定行?

javascript - 如何以编程方式创建递增到定义数字、重置为零并再次递增的 3D 数组?

php - 获取深度多维数组的所有 child

python - 让函数在数据帧的每一行上工作(pandas)

python - 如何读取多个数据集,并创建具有年份列的单个数据框

java - 如何编写用户输入的二维数组?

python - 基于python中的不同二进制列创建分类列