【问题标题】:Python: My for loop doesn't iterate over all items in a listPython:我的 for 循环不会遍历列表中的所有项目
【发布时间】:2013-03-21 04:45:46
【问题描述】:

在学习有关 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 的整个部分都消失了。 有谁知道我做错了什么?

【问题讨论】:

  • 请注意,在稍微编辑您的问题以提高可读性后,错误会变得非常明显......

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


【解决方案1】:

Mexican Grill 条目的空行之后只有 4 项,因此 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)

【讨论】:

  • +1 不仅可以发现问题,还可以提供解决方法(即使输入文件有缺陷,也可以正确解释)。
猜你喜欢
  • 1970-01-01
  • 2017-07-27
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
相关资源
最近更新 更多