二维数组结构python

2024-10-08 19:31:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在上一个python类,没有python方面的经验。讲师只教文档,拒绝给出代码示例。我理解C++,但我对Python感到非常沮丧,因为我基本上是在教自己。在

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

文本文件可能如下所示:

HGAMONIHRA
AOMOKAWONS
NFROLBOBDN
ARFSIHCAGE
LNIEEWONOK
GOLFUNDTHC
KOCATAOHBI
AMRERCGANH
SLGFAMALLC
ALLIGATORX

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

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

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

^{pr2}$

有人能教我,因为我的老师不会,我真的很想学。在


Tags: 字符串代码文档示例数量字典数组经验
3条回答

Python字符串被视为不可变的集合(类似于元组),因此您只需要保存每行的一组字符串。在

count = 0
text = open("puzzle.txt", 'r')
myLines = text.readlines()

#Usage;
print myLines[0][0]
# Prints the first character

因为python字符串是不可变的,因此需要将整个索引设置为新字符串

^{pr2}$

你可以用一个列表来完成:

>>> with open('puzzle.txt') as f:
...   a = [list(line.rstrip()) for line in f]
... 
>>> a[0,3]
>>> a[0][3]
'M'
>>> a[1][0]
'A'

乍一看,您的代码有一个明显的问题-每次通过循环将mydict重置为空dict,并使用以下行:

    mydict = dict()

如果将其移动到循环之前,则可以进一步测试,以确定是否有其他问题需要修复。在

然而,有一种更直接的方法来实现你想要的:

^{pr2}$

这将打开文件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'

相关问题 更多 >

    热门问题