Python 在列表中分隔值以形成坐标对

Python 在列表中分隔值以形成坐标对,python,list,csv,Python,List,Csv,下面是我当前的代码 import csv def function(): latitude = [] longitude = [] with open('data.csv', 'rU') as input: # dL= list(csv.reader(input)) sL = [row[4] for row in dL[1:]] longitude.append(sL) sL1 = [row

下面是我当前的代码

import csv
def function():

    latitude = []
    longitude = []
    with open('data.csv', 'rU') as input: #
          dL= list(csv.reader(input))
          sL = [row[4] for row in dL[1:]]
          longitude.append(sL)
          sL1 = [row[3] for row in dL[1:]]
          latitude.append(sL1)

    print latitude
    print longitude

    print
    for i in range(0, len(latitude)):
        print "Co-ordinates (" + str(latitude[i]) + "," + str(longitude[i]) + ")"

function()
对,所以我的输出产生了这个

[['-20.71', '-20.73', '-20.88', '-20.78', '-20.76', '-20.68', '-20.95', '-21.06', '-21.05', '-20.9']]
[['116.77', '116.75', '116.67', '117.15', '117.16', '117.19', '117.37', '117.44', '116.26', '117.64']]

Co-ordinates (['-20.71', '-20.73', '-20.88', '-20.78', '-20.76', '-20.68', '-20.95', '-21.06', '-21.05', '-20.9'],['116.77', '116.75', '116.67', '117.15', '117.16', '117.19', '117.37', '117.44', '116.26', '117.64'])
这显示了我想要生成的列表

我想做的是生成一个如下所示的输出

Co-ordinates (-20.71,116.77)
Co-ordinates (-20.73, 116.75) 
对于所有坐标对,依此类推

有没有办法把坐标的输出转换成我想要的输出

  • 您想使用
    extend
    而不是
    append
  • zip(纬度、经度)
  • 再想一想,您可以对dL[1:]中的行执行
    longitude=[row[4]。您不需要扩展(或追加或初始化)任何内容

    更好:

    with open('data.csv', 'rU') as infile:
          dl = list(csv.reader(infile))
    lat_long = [tuple(row[3:5]) for row in dl[1:]]
    for (lat, lng) in lat_long:
        print "Co-ordinates ({0}, {1})".format(lat, lng)
    

    纬度
    经度
    转换为“平面”列表,而不是包含一个列表的列表后,这将起作用。请参阅Elazar关于使用
    extend

    的提示。您可以通过使用以下方法避免预先构建列表和正在执行的列表comp:

    from operator import itemgetter
    from itertools import imap, islice
    
    with open('data.csv', 'rU') as fin:
        dL= csv.reader(fin)
        for lat, lon in imap(itemgetter(3, 4), islice(dL, 1, None)):
            print 'coordinates ({}, {})'.format(lat, lon)
    

    谢谢@Elazar代码非常适合我的需要,但是我不需要压缩纬度和经度,但是谢谢你的帮助。我更喜欢使用
    next(dL,None)#跳过
    islice()上的标题
    ;我没有看到你的答案,但是使用了相同的名字,所以看起来好像我复制了它:-/。而且:我认为不建议使用
    %
    运算符。
    from operator import itemgetter
    from itertools import imap, islice
    
    with open('data.csv', 'rU') as fin:
        dL= csv.reader(fin)
        for lat, lon in imap(itemgetter(3, 4), islice(dL, 1, None)):
            print 'coordinates ({}, {})'.format(lat, lon)