制作一个满足条件的列表

时间:2014-12-19 22:59:28

标签: python list if-statement comparison

我有一个包含以下数据的CSV文件:

1,1,3,2,2,1
2,1,3,2,1,1
3,2,4,2,7,3
4,1,3,2,3,1
5,3,3,1,1,1

我想创建一个列表,其中包含第六列的元素,其中第二列为1。简而言之,我想要的最终结果是[1, 1, 1]

这是我写的代码:

input = open("C:\\test.txt", "r")

for line in input.readlines():
    line = line.strip()
    no, grade, gpa, sex, preview, review = line.split(',')

    listno1 = []
    a = float(grade)
    if a == 1:
        listno1.append(int(review))

当我打印时,结果如下:

[]
[]
[]
[]
[1]
[2]
[]
[]
[4]
[]

请帮忙吗?我有点想坚持使用列表。

1 个答案:

答案 0 :(得分:3)

您正在为每一行创建列表,而不是仅在循环外创建一次列表。

你也在重新发明CSV轮;请改用csv module。因为您只为满足条件的每一行选择一列,所以您可以使用列表推导:

import csv

with open("C:\\test.txt", "r") as infile:
    reader = csv.reader(infile)
    listno1 = [int(row[5]) for row in reader if int(row[1]) == 1]

这基本上与以下内容相同:

import csv

with open("C:\\test.txt", "r") as infile:
    reader = csv.reader(infile)
    listno1 = []
    for no, grade, gpa, sex, preview, review in reader:
        grade = int(grade)
        if grade == 1:
            listno1.append(int(review))

但是用更紧凑的表示法。