Python max() - 列表中最大的元素与CSV文件中的最大元素不同

时间:2017-10-04 18:51:15

标签: python python-2.7 list csv element

我的主要列表文件是CSV格式,分隔符是逗号,并且主要数据的数据高达50000.该文件也有随机换行符。

问题:49999是文件中最大的数字,但primes_list中最大的元素是9973!

[稍后Primes列表中的每个素数都将转换为long类型,并使用for循环中的值。 for prime in Primes]

因此我的问题是我在使用下面的最小python代码时出错了吗?

Python版本是2.76,在Linux Mint 17上运行。

编辑 - 评论后更正的代码;

import csv

def factorise()
    primes=[]
    with open(primefile,'r') as csvfile:
        primes_data=csvfile.read().replace('\n','').split(',')
        primes=primes_data
        print('Number of elements is: '+str(len(primes)))
        print('First element is: '+primes[0])
        print('Last element is: '+primes[-1])
        csvfile.close()
        print('Largest element is: '+max(primes))

输出示例;

Number of elements is: 5134
First element is: 2
last element is: 49999
Largest element is: 9973

1 个答案:

答案 0 :(得分:0)

那么9973有什么特别之处?你看过这个文件了吗?那里有一条新线?

无论如何,你可能想要的是csv.reader()而不是标准的IO.read()

import csv

def factorise():
    first_element = int()
    total_list = list()

    with open("primefile.csv", "r") as file:
        primes = csv.reader(file)
        for line in primes:
            if not first_element:
                print('First element is: %s' % line[0])
                first_element = line[0]
            total_list.extend(line)
        print('Number of elements is: %s' % len(total_list))
        print('Last element is: %s' % line[-1])

if __name__ == "__main__":
    factorise()

我没有你的来源所以我无法测试这个,但它似乎应该有用。

编辑:修复了几个愚蠢的错误