Python 制作一个满足条件的列表

Python 制作一个满足条件的列表,python,list,if-statement,comparison,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,

我有一个包含以下数据的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]
[]

请帮忙?我想坚持使用列表

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

你也在重塑CSV轮子;改用新的。由于您仅为满足条件的每行选取一列,因此可以使用列表:

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))

但是使用更简洁的表示法。

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

你也在重塑CSV轮子;改用新的。由于您仅为满足条件的每行选取一列,因此可以使用列表:

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))

但是使用更简洁的表示法。

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

你也在重塑CSV轮子;改用新的。由于您仅为满足条件的每行选取一列,因此可以使用列表:

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))

但是使用更简洁的表示法。

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

你也在重塑CSV轮子;改用新的。由于您仅为满足条件的每行选取一列,因此可以使用列表:

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))

但是用更简洁的表示法。

循环中有
listno1=[]
,所以每次都要清除它。循环中有
listno1=[]
所以每次都要清除它。循环中有
listno1=[]
所以每次都要清除它。你有
listno1=[]
在循环内部,因此每次都要清除它。更紧凑的使用
如果等级==“1”
而不强制转换为整数更紧凑的使用
如果等级==“1”
而不强制转换为整数更紧凑的使用
如果等级==“1”
而不强制转换为整数更紧凑的使用
如果等级==“1”
不强制转换为整数