无法在python中将值附加到列表中

时间:2014-11-18 22:26:59

标签: python list python-3.x append

我试图将已经读过的文本文件中的值从单独的列表中取出来,并且我试图找到每个E' E'的具体位置。在文本文件中。每次使用以下方法打印列表后,它都会显示为空。我不确定我做错了什么。剂量等于6

for a in range(0,2,1):
    agentLocations.append([])
    for c in range(0,AGENTS,1):
        indices = [(i,x) for i, x in enumerate(aMaze) if x == 'E']
        agentLocations[a].append(0)
        print(indices)

将文件放入自己的列表的代码如下:

for line in file:
    for char in line:
        for r in range (0, ROWS, 1):
            aMaze.append ([])
            aMaze[r].append(char)
    print ("".join(aMaze[ROWS-1]))

输入的文件看起来像

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~H                           ~
~                            ~
~                            ~
~                            ~
~#                           ~
~                            ~
~                            ~
~        E                   ~
~                            ~
~                            ~
~                            ~
~               ##### #######~
~      E        #E           ~
~               #           E~
~               #   ES       ~
~               E            ~
~                            ~
~                            ~
################

我正在寻找' E'列表中的字符。

1 个答案:

答案 0 :(得分:0)

我认为问题在于你的aMaze没有正确构建。这就是为什么我认为......

要调试与打印标记问题相关的代码,您需要首先详细说明列表理解,然后添加打印件。

我做到了,我发现aMaze的枚举会产生数以万计的迭代次数。那是你所期待的吗?这不是我所期待的。

然后我打印了一个魔法本身。 aMaze中有数以万计的空列表:事实上,输入文件中每个字符的ROWS数量。 (aMaze.append ([])位于内部循环内,为文件中的每个字符执行ROW次数。

这似乎不对(我不得不猜出ROWS是什么)。

因此,围绕构建aMaze数组的逻辑似乎是错误的,但很难说它有什么问题,因为很难确定意图。例如,为什么打印aMaze的ROWs行成功地打印了迷宫:显然某些东西正在按预期运行,这使得很难从你的角度理解什么是不对的。

我的回答和建议:重新审视你是如何构建一个迷宫的。如果您无法对其进行调试,请提出一个新问题,重点关注那些给您带来麻烦的问题。

以下是调试会话后的最终完整代码。

agentLocations = []
AGENTS=1
ROWS=20

aMaze = []

with open("foo.txt") as f:
    for line in f:
        for char in line:
            for r in range (0, ROWS, 1):
                aMaze.append ([])
                aMaze[r].append(char)
    print ("".join(aMaze[ROWS-1]))

print aMaze

for a in range(0,2,1):
    agentLocations.append([])
    for c in range(0,AGENTS,1):
#        indices = [(i,x) for i, x in enumerate(aMaze) if x == 'E']
        indices = []
        for i,x in enumerate(aMaze):
            print "i,x", i,x
            if x =='E':
                indicies.append((i,x))

        agentLocations[a].append(0)
        print(indices)

请注意,我必须猜测aMaze和agentLocations的ROWS和初始值是什么。我也看不到重复c循环AGENTS次的问题,所以我将AGENTS设置为1.

这些并不难猜,但这意味着你还没有掌握MVCE(根据我对你的问题的评论)。它将帮助您在这里获得更好的帮助,掌握它,并且您会发现创建MVCE的行为通常会在此过程中呈现解决方案。