Python 从2d列表中获取x,y并继续

Python 从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

我正在尝试获取一个包含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))
    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