如何将一串数字转换为Python上的列表?

时间:2016-10-07 16:20:26

标签: python

我试图弄清楚文本文件中有多少数字大于0.1。 文本文件有1001个姓氏和数字,格式如下:

Doe 5
Anderson 0.3
Smith 6

我想出了如何分开这些数字,但我在将我的数字串转换为列表时遇到了麻烦,以便我可以将它们与0.1进行比较

这是我到目前为止所做的:

    infile = open('last.txt')
    lines = infile.readlines()
    for line in lines:
        items = line.split()
        nums = (items[1])

另外,一旦我有了我的清单,我该如何将其与0.1进行比较?

3 个答案:

答案 0 :(得分:4)

假设lines是一个字符串列表,每个字符串只包含一个数字而已。

result = sum(1 if float(x) > 0.1 else 0 for x in lines)

另一种非常类似的做法:

result = sum(float(x) > 0.1 for x in lines)

答案 1 :(得分:0)

根据您的说明和代码段,您似乎有一个空格分隔名称的文件,如下所示:

Name1 0.5
Name2 7
Name3 11

为了得到多少个数大于0.1的总和,您可以执行以下操作:

result = sum(float(line.split()[1]) > 0.1 for line in lines)

答案 2 :(得分:0)

其他答案告诉您如何计算大于0.1的出现次数,但您可能希望将这些数字放在列表中,以便它们可用于其他目的。要做到这一点,您需要对代码进行一些小修改:

with open('last.txt', 'r') as infile:
    lines = infile.readlines()

nums = []
for line in lines:
    items = line.split()
    nums.append(float(items[1]))

这会为您提供文件中所有数字的nums列表。请注意,我还使用了Python上下文管理器(使用with调用)来打开文件,以确保在您不再使用它时它已正确关闭。

现在,您仍然可以在nums中计算大于0.1的值的出现次数:

sum(1 if x > 0.1 else 0 for x in nums)