我试图写一个曼哈顿距离函数,将比较两行从一个csv文件。我已经有一个函数从一个文件中读取所有的行,但是我无法从这个函数中访问“row”,以便在第二个函数中进行比较。我得到的错误是“name‘row’not defined”。 这是我的密码:
def load_from_csv(filename):
with open(filename,'r') as csvfile:
reader = csv.reader(csvfile, delimiter=',', quotechar='|')
for row in reader:
print(row)
return row
load_from_csv('data.csv')
def manhattan_distance(x,y):
return sum(abs(a-b) for a,b in zip(x,y))
print (manhattan_distance(row[1],row[2]))
csv文件的示例(前两行):
14.23 1.71 2.43 15.6 127 2.8 3.06 0.28 2.29 5.64 1.04 3.92 1065
13.2 1.78 2.14 11.2 100 2.65 2.76 0.26 1.28 4.38 1.05 3.4 1050
抱歉,如果这是一个愚蠢的问题,但我不擅长Python,我正在努力寻找一个相关的在线答案。你知道吗
问题是
row
只能在for
循环中访问。如果要读取csv
的所有内容,可以在load_from_csv
函数中执行以下操作:您试图返回一个不存在的变量;
row
声明
for row in reader
,这意味着可以在循环中使用row
。但是,您的return语句落在循环之外,因此导致未定义它的错误。你知道吗尝试将CSV行调用到列表,然后从函数返回列表。你知道吗
像这样的方法应该更有效。
你不能
return
某个东西在使用时不存储。在
load_from_csv
结尾有return row
。你知道吗但是,当您使用
load_from_csv
时,您只是在文件中直接运行它。您需要将返回值存储在变量中,以便以后使用。i、 例如,store_it = load_from_csv("somefile.csv")
现在,row
被return
转换成store_it
并保存在一个变量中。你知道吗当然,您的
load_from_csv
函数还有其他问题,但最重要的是要知道使用return
做什么,以及如何“捕获”返回的内容。你知道吗祝你Python节快乐,新年快乐。你知道吗
相关问题 更多 >
编程相关推荐