【问题标题】:Create a coordinate pair from this code从此代码创建坐标对
【发布时间】:2013-06-22 07:49:17
【问题描述】:

这是我当前的代码

a_reader = None
a_reader     = open('data.csv', 'rU')
a_csv_reader = csv.reader(a_reader)

for row in a_csv_reader:
       print row
a_reader.close()

count = 0
sum   = 0.0
a_reader     = open('data.csv', 'rU')
a_csv_reader = csv.reader(a_reader)
a_csv_reader.next()

for row in a_csv_reader:
        if count != 0 and row[0] != '':
            sum = sum + float(row[0])
        count = count + 1

a_reader.close()
print 'Number of lines is:',count
print 'Sum is:',sum
return listStation

这会产生下面的结果

['1', '476050', '7709929']    
['2', '473971', '7707713']    
['3', '465676', '7691097']    
['4', '515612', '7702192']    
['5', '516655', '7704405']    
['6', '519788', '7713255']    
['7', '538466', '7683341']    
Number of lines is: 8    
Sum is: 28.0

好的,我想要的输出显示在下面的双重列表中。

[[476050, 7709929],[473971, 7707713],[465676, 7691097],[515612, 7702192],[516655, 7704405],[519788, 7713255],[538466, 7683341]]

如何更改我的代码以将结果生成为双列表,如上所示。是否可以创建一个坐标对的双重列表,如上所示。你能帮帮我吗?

感谢任何帮助。

【问题讨论】:

    标签: python list split coordinates


    【解决方案1】:

    切掉最后两个元素,然后追加。

    >>> ['1', '476050', '7709929'][1:3]
    ['476050', '7709929']
    

    【讨论】:

    • @Haidro 这似乎是问题所在。如何首先使用我的代码切掉最后两行。
    • @KristoferWright 而不是 for row in a_csv_reader: print row 只需 [row[-2:] for row in a_csv_reader]
    • @Haidro 你能编辑我的代码吗?我试过了,但一直说语法错误:/
    • @IgnacioVazquez-Abrams 是的,但是这在我的代码中是在哪里实现的,因为您显示的是打印 csv 阅读器
    • @KristoferWright 我已经添加了一个答案。我不是 100% 你的意思
    【解决方案2】:
    import csv
    import itertools
    
    with open('data.csv') as f:
        reader = csv.reader(f)
        rows = []
        total = 0
        for row in itertools.islice(reader, 1, None): # Skip a header
            if row[0]:
                total += int(row[0])
                rows.append(row[1:])
    
    print 'Number of lines is:', len(rows)
    print 'total is', total
    print rows
    

    【讨论】:

      【解决方案3】:

      代替:

      for row in a_csv_reader:
          print row
      

      使用列表推导对列表进行切片:

      for i in [row[-2:] for row in a_csv_reader]:
          print i
      

      哪些打印:

      ['476050', '7709929']
      ['473971', '7707713']
      ['465676', '7691097']
      ['515612', '7702192']
      ['516655', '7704405']
      ['519788', '7713255']
      ['538466', '7683341']
      

      因此[row[-2:] for row in a_csv_reader] 是:

      [['476050', '7709929'], ['473971', '7707713'], ['465676', '7691097'], ['515612', '7702192'], ['516655', '7704405'], ['519788', '7713255'], ['538466', '7683341']]
      

      这是您的预期输出。

      【讨论】:

      • 感谢@Haidro,这是完美的,我现在可以从这里摆弄它以应用更多的值和功能。谢谢
      • @KristoferWright 不要忘记accept an answer :)
      猜你喜欢
      • 2021-01-17
      • 2015-01-21
      • 2019-10-22
      • 2021-10-13
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 1970-01-01
      相关资源
      最近更新 更多