我找不到为什么我的下面的代码不会为for循环中的第n行分配一个新值。据我所知,我对b矩阵进行索引的方式应该是正确的,但似乎count变量不会为每次迭代更新。打印语句仅用于检查发生了什么。为for循环python中的行赋值
我认为这很简单,所以我很高兴如果有人能指出我是错的。
#!/usr/bin/python
import sys
#from string import maketrans
#import re
import numpy as np
lines = sum(1 for line in sys.stdin)
b = np.zeros((lines,2))
count = 0
for line in sys.stdin:
line = line.strip()
myline = line.split(",")
Depart = myline[3]
DepartDelay = float(myline[6])
if DepartDelay<0:
DepartDelay=0
b[count,0] = Depart
b[count, 1] = DepartDelay
count = count + 1
print(count)
print(b)
print(count)
我使用以下命令来执行Ubuntu终端内的代码。
cat sample.txt | mapper.py
这就是为什么没有指定任何数据/文本文件。
提前,谢谢!
谢谢您的回复! 我会实施您的修改以使我的代码更加流畅。 但是,请你让我知道这将如何解决我最初的问题? –
当然,但你必须更具体 - 给出一个期望的输出的例子,你会得到什么?有没有错误或者只是出乎意料的行为?如果你想要一个解决方案,定义你的问题 –
你完全可以[迭代文本文件](https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects),它是鼓励清晰和高效(readline强制将整个文件加载到内存中)。唯一要记住的是它们是可迭代的,而不是序列,所以你可能没有机会倒带或重读。 –