Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
二维数组结构python_Python_Multidimensional Array - Fatal编程技术网

二维数组结构python

二维数组结构python,python,multidimensional-array,Python,Multidimensional Array,我正在上python课程,没有python方面的经验。讲师只教授文档,拒绝给出代码示例。我理解C++,但是我对Python感到非常沮丧,因为我基本上是在教自己。 我想打开一个文本文件,其中每行包含一个随机字符字符串。例如,长度可以是8、10、15或20个字符。它必须是灵活的。文本文件中可能有未指定数量的字符串(行) 文本文件可能如下所示,例如: HGAMONIHRA AOMOKAWONS NFROLBOBDN ARFSIHCAGE LNIEEWONOK GOLFUNDTHC KOCATAOHBI

我正在上python课程,没有python方面的经验。讲师只教授文档,拒绝给出代码示例。我理解C++,但是我对Python感到非常沮丧,因为我基本上是在教自己。 我想打开一个文本文件,其中每行包含一个随机字符字符串。例如,长度可以是8、10、15或20个字符。它必须是灵活的。文本文件中可能有未指定数量的字符串(行)

文本文件可能如下所示,例如:

HGAMONIHRA
AOMOKAWONS
NFROLBOBDN
ARFSIHCAGE
LNIEEWONOK
GOLFUNDTHC
KOCATAOHBI
AMRERCGANH
SLGFAMALLC
ALLIGATORX
我只想弄清楚如何将每个字符放入类似数组的结构中,这样我就可以像二维数组-->我的数组[2][3]那样访问它

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

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

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

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

你可以通过列表来完成:

>>> 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'

您可以使用一系列列表来完成此操作:

>>> 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'

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

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

#Usage;
print myLines[0][0]
# Prints the first character
因为python字符串是不可变的,所以需要将整个索引设置为新字符串

myLines[0] = mylines[0:1] + 'G' + myLines[2:]

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

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

#Usage;
print myLines[0][0]
# Prints the first character
因为python字符串是不可变的,所以需要将整个索引设置为新字符串

myLines[0] = mylines[0:1] + 'G' + myLines[2:]

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

    mydict = dict()
如果将其移动到循环之前,则可以进一步测试以查看是否有其他问题需要修复

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

>>> with open("puzzle.txt") as f:
...     puzzle = [list(line.strip()) for line in f]
这将打开文件
puzzle.txt
,并将其分配给变量
f
,然后将文件中的每一行读取为字符串变量
,去除所有空白(包括结尾的换行符),将生成的字符串转换为字符列表,最后将这些列表收集到另一个列表中,并分配给变量
puzzle
。最后,因为所有这些都是在
with
语句中完成的,所以文件会自动关闭

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

如果使用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'

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

    mydict = dict()
如果将其移动到循环之前,则可以进一步测试以查看是否有其他问题需要修复

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

>>> with open("puzzle.txt") as f:
...     puzzle = [list(line.strip()) for line in f]
这将打开文件
puzzle.txt
,并将其分配给变量
f
,然后将文件中的每一行读取为字符串变量
,去除所有空白(包括结尾的换行符),将生成的字符串转换为字符列表,最后将这些列表收集到另一个列表中,并分配给变量
puzzle
。最后,因为所有这些都是在
with
语句中完成的,所以文件会自动关闭

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

如果使用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'

你不能把每一行都留作一个字符串吗<代码>“测试”[0]==“t”是的,我想。它会改变结构中一行的含义,但不会有任何问题。如果他们需要结构是可变的,拥有一个列表列表将比一个字符串列表更像“数组”。你不能把每一行都作为一个字符串吗<代码>“测试”[0]==“t”是的,我想。它会改变结构中一行的含义,但不会有任何问题。如果他们需要结构是可变的,拥有一个列表列表将比一个字符串列表更像“数组”。你指出的第一件事我应该知道得更清楚。我真不敢相信我没看到。移动该行后,我立即能够看到代码中的所有值,包括字符串末尾的“\n”字符(self-face palm)。:)感谢您花时间发布详细答案和相关链接。我会阅读链接,看看我能做些什么。我非常感谢你的帮助-丹,回答得真棒。应该有更多的ups。谢谢你。你指出的第一件事我应该知道得更清楚。我真不敢相信我没看到。移动该行后,我立即能够看到代码中的所有值,包括字符串末尾的“\n”字符(self-face palm)。:)感谢您花时间发布详细答案和相关链接。我会阅读链接,看看我能做些什么。我非常感谢你的帮助-丹,回答得真棒。应该有更多的ups。