Python 从2d列表中获取x,y并继续
我正在尝试获取一个包含lat/longs的2d位置列表,并仅从列表(第3列和第4列)中获取坐标,以便发送到另一个函数,以便可以计算距离。。。但我完全被难住了。 我所拥有的是 从OP编辑显示我在哪里。。。 x1=-18.00#这些值不变 y1=118.00Python 从2d列表中获取x,y并继续,python,list,2d,Python,List,2d,我正在尝试获取一个包含lat/longs的2d位置列表,并仅从列表(第3列和第4列)中获取坐标,以便发送到另一个函数,以便可以计算距离。。。但我完全被难住了。 我所拥有的是 从OP编辑显示我在哪里。。。 x1=-18.00#这些值不变 y1=118.00 x2=浮动(origList[3]) y2=浮动(origList[4]) n=长(或长) 应用程序=[] for i in range (n-1): appList.append(findDistance(x1, y1, x2, y2
x2=浮动(origList[3]) y2=浮动(origList[4]) n=长(或长) 应用程序=[]
for i in range (n-1):
appList.append(findDistance(x1, y1, x2, y2))
print appList
但现在我得到了…文件“F:\Storage\t\u 2\coord\u find.py”,第27行,在main中,x2=math.fabs(origList[3])
TypeError:需要浮点
那么问题在于转换成浮点型
那么到目前为止,我对FindInstance函数所做的一切(我只是刚刚启动它,只是想测试参数是否正确传递)。。。
def FindInstance(x1、y1、x2、y2):
cosX=math.fabs(y1-y2)
a=90-x2
b=90-x1
这是我更新的代码,它给了我这个 delx=数学晶圆厂(y1-y2) TypeError:-:“float”和“list”的操作数类型不受支持 我之所以把它贴出来,是因为我显然没有给出足够清楚的解释,而且后来做了一些改变。如你所见,我想从Cols3,4得到x2,y2。 尝试了x2=float(origList[3]),y2=float(origList[4]),但这也不起作用-我得到“float()参数必须是字符串或数字”。 在尝试提取浮动值之前,是否需要以某种方式拆分列表
import csv
import math
def fZone():
origList = [['200','12_7','Cons_pl','-20.10','120.10','C_10_T2'],['....'...]]
# origList has 30+ lines like this
x1 = -20.68 # Fixed point
x2 = 117.19 # Fixed point
n = len(origList) # list length
appList = [] # to hold returned
for i in range (n):
x2= origList[3] # I wanna get the '-20.10' col each iteration
y2= origList[4] # I wanna get the '120.10' col each iteration
appList.append(findDist(x1, y1, x2, y2))
print appList
def findDist(x1,y1,x2,y2):
delx = math.fabs(y1 - y2)
a = 90 - x2
b = 90 - x1 # formula is not finished
您的
origList[0://code>计算结果为origList
。请尝试origList[0]
范围(0,n-1)
只会增加到n-2,您无需指定起始值0,因为这是默认值。使用范围(n)
你说坐标在第3列和第4列。看起来您对编程语言中的索引有些陌生,所以我希望我不会冒犯您,因为有人无缘无故地提醒您,您可能正在查找列表元素2和3,如果您的意思是这些是第3列和第4列的话
而且,打印应该在循环之外。显然,您的列表包含的是成对的字符串,而不是数字
在Python中,此转换从来不是自动的,因此您可能必须将代码更改为:
findDistance(x1, y1, float(origList[i][3]), float(origList[i][4]))
像这样的错误
lat2= float(stnList[3])
TypeError: float() argument must be a string or a number
显然,传递给float的既不是数字也不是字符串
只需在有问题的语句之前添加一个print repr(stnList[3])
,然后检查传递的内容
您还可以使用python调试器来查找问题所在,例如,检查这段简短的视频a什么是确切的回溯?findInstance
是如何定义的?什么是origList
?origList是原始的2d列表,包含x和y以及一些其他字段。x在第3列,y在第4列。我循环通过每对x,y将它们发送到findDistance函数,得到返回的距离。根据循环的编写方式,我会说它的len(orglist)
,而不是len(orglist[0])
。我添加了整个回溯,然后在我的计算(y1-y2)中实现,但我将它们作为origList[I][3]引入等等,我想我需要把变量x2,y2放在其他变量下面,使它们=origList[3]和=origList[4],或者类似的东西??顺便说一句,我认为[0:]会跳过第一行标题。如果它真的是一个2d列表,len(latList)
将给出记录数,而len(orgList[0])将给出每条记录的长度。因此,这取决于lat/lon是在记录3/4还是列3/4中。给定OP,我同意6502。对不起,x,y是第4,5列,所以索引如(3,4)所述。我按照建议做了其他更改…len(origList)、range(n)等,但仍然得到了回溯错误。好的,列表中确实有字符串,所以我更改了对findDistance(x1、x2、y1、y2)的调用,并在x1、x2下面添加了y1、y2变量,因此它们是y1=float(origList[3])、y2=float(origList[4]),但现在得到。。。“lat2=float(stnList[3])TypeError:float()参数必须是一个字符串或一个数字”我每天都在读源代码,却看不到它的魔力,周六早上我被允许使用它。除非你把源代码给大家看,否则我不会公开告诉大家错误是什么。该死的,因为这是我的第一篇帖子,我必须等着发布更新后的代码。虽然我不能发布atm,但我所能做的就是将坐标传递给函数。。。def findDistance(x1,y1,x2,y2):cosX=math.fabs(y1-y2)a=90-x2b=90-x1