Python:我的for循环不会遍历列表中的所有项目

时间:2013-03-30 16:40:54

标签: python list for-loop python-3.x

在关注Python的在线课程时,我们鼓励自己编写某个程序。这不是一个标记,而只是为了练习。我不想帮助解决问题,但我需要帮助,为什么我的代码没有做我认为它会做的事情。

代码的(相关)部分如下:

raw_restaurants = file.readlines()

print(raw_restaurants)

restaurants = []
information = []
for i in raw_restaurants:
    if len(information) < 5:
        information.append(i.strip())
    if len(information) ==  5:
        restaurants.append(information)
        information = []

这是使用的列表。原始列表是使用file.readlines()创建的。

['Georgie Porgie\n', '87%\n', '$$$\n', 'Canadian,Pub Food\n', '\n', 
 'Queen St. Cafe\n', '82%\n', '$\n', 'Malaysian,Thai\n', '\n', 
 'Dumplings R Us\n', '71%\n', '$\n', 'Chinese\n', '\n', 
 'Mexican Grill\n', '85%\n', '$$\n', 'Mexican\n', '\n', 
 'Deep Fried Everything\n', '52%\n', '$\n', 'Pub Food\n']

问题在于我的功能是输出:

[['Georgie Porgie', '87%', '$$$', 'Canadian,Pub Food', ''], 
 ['Queen St. Cafe', '82%', '$', 'Malaysian,Thai', ''], 
 ['Dumplings R Us', '71%', '$', 'Chinese', ''], 
 ['Mexican Grill', '85%', '$$', 'Mexican', '']]

这意味着关于Deep Fried Everything的整个部分已经解散了。 谁知道我做错了什么?

1 个答案:

答案 0 :(得分:5)

您只有 4 项超过Mexican Grill条目的空行,因此if len(information) == 5:测试永远不会变为True。

如果其中有项目,只需再次添加information

for i in raw_restaurants:
    if len(information) < 5:
        information.append(i.strip())
    if len(information) ==  5:
        restaurants.append(information)
        information = []
if information:
    restaurants.append(information)