python - for 循环中的某些对象没有迭代
问题描述
我试图通过 for 外观运行,当我以某种方式通过代码时遇到问题。我正在运行我的代码的以下部分:
for f in adg1:
sptline2 = f.split(' ') #delimits line using a space
sptline3 = list(filter(None, sptline2))
目前,它贯穿 sptline2 部分,当我打印它时,sptline2 返回一个输出。但是,当我到达 sptline3 时,没有任何内容作为 sptline3 返回。当我在可以调用该函数的位置键入相同的代码时,会为 sptline3 分配一个值,但是当它在代码中运行时,它会返回一个空列表。
这不是全部代码,因此本节中可能缺少一些可能会有所帮助的内容,我可以根据需要添加这些内容。我遇到问题的代码的相关部分如下:
for f in adg1:
sptline2 = f.split(' ') #delimits line using a space
sptline3 = list(filter(None, sptline2)) #removes empty values
for x in sptline3:
if sptline3.index(x) == len(sptline)-1: #gets last value
adgvals.append(x) #adds adg values into list
for ad in adgvals:
ad1 = ad.strip('"')
ad2 = ad1.replace('444.000\n', '444.0')
ad3 = ad2.strip('\n')
adgvals2.append(ad3)
adg1 的示例如下:
[ ' 8903 31 2310 1.378\n', ' 8903 31 2320 1.378\n', ' 8903 31 2330 444.000\n', ' 8903 31 2340 444.000\n', ' 8903 31 2350 1.378\n']
sptline2 的示例输出如下:
['', '', '', '8903', '', '31', '2350', '', '', '1.378\n']
我收到的错误是关于遍历空列表并尝试添加新的(不存在的)值。
print(sptline3)
[]
我期望为 sptline3 获得以下信息:
['8903','31', '2350', '1.378\n']
最终期望从每个 sptline3 的最后一列中获取所有值的列表,用于 adgvals2 的输出:
['1.378\n', '1.378\n', '1.378\n', '1.378\n', '1.378\n', '1.377\n']
如果您有任何问题,请告诉我,谢谢!
解决方案
您的问题来自您的 if 语句,应该是
for f in adg1:
sptline2 = f.split(' ')
sptline3 = list(filter(None, sptline2))
for x in sptline3:
if sptline3.index(x) >= len(sptline3)-1:
您的情况不正确,这就是它返回的原因,您应该与 sptline3 的 len 而不是 sptline 进行比较
除此之外,您的代码中仍然存在错误,您所做的将给出重复的最终结果,或者 3 或更多.. 但这会给您预期的结果
adg1 = [ ' 8903 31 2310 1.378\n', ' 8903 31 2320 1.378\n', ' 8903 31 2330 444.000\n', ' 8903 31 2340 444.000\n', ' 8903 31 2350 1.378\n']
adgvals = []
adgvals1 = []
for f in adg1:
sptline2 = f.split(' ')
sptline3 = list(filter(None, sptline2))
for x in sptline3:
if sptline3.index(x) >= len(sptline3)-1:
adgvals.append(x)
if len(adgvals) == len(adg1):
for ad in adgvals:
ad1 = ad.strip('\n')
ad2 = ad1.replace( '444.000\n', '440')
adgvals1.append(ad2)
有更短的方法可以实现这一点,但这遵循您的初始模式
推荐阅读
- python - 回调后图形和虚线表未更新
- flutter - Flutter:预期 3 个位置参数,但找到 0 个
- go - 使用SQLBoiler和golang来like操作MYSQL
- python - 使用 GroupBy 后,列名中出现键错误
- javascript - 如何将快捷键设置为段落样式(InDesign jsx 脚本)?
- javascript - 使用 Mongoose 在 Strapi 中创建自定义查询
- reactjs - 将现有 AppSync API 添加到 AWS Amplify
- android - 一段时间后如何使 ViewModel/LiveData 失效?
- java - 无法将存储库推送到 Github
- python - Spyder 突然将代码复制到文件末尾