Python 如何子集列表直到满足特定条件(使用逻辑运算符、循环或函数)?

Python 如何子集列表直到满足特定条件(使用逻辑运算符、循环或函数)?,python,python-3.x,list,Python,Python 3.x,List,我有一个txt文件,其中包含关于每个州SAT分数的信息。我创建了3个空列表,并使用下面的代码进行了附加。现在,我想对列表进行子集,以便输出显示口头分数>20的州名。下面是我的数据集示例: filepath=open('myfile.txt','r') l=[] states=[] verbals=[] maths=[] for h in filepath: n=h.strip() b=n.split() l.append(b) f

我有一个txt文件,其中包含关于每个州SAT分数的信息。我创建了3个空列表,并使用下面的代码进行了附加。现在,我想对列表进行子集,以便输出显示口头分数>20的州名。下面是我的数据集示例:

  filepath=open('myfile.txt','r')
   l=[]
   states=[]
   verbals=[]
   maths=[]
  for h in filepath:
     n=h.strip()
     b=n.split()
     l.append(b)
  for (state,verbal,math) in l:
       states.append(state)
       verbals.append(verbal)
        maths.append(math)

 filepath.close()



  State      Verbal  Math
    NY          50      100
    NJ          10       90
    DC          25       50
   Carolina     40      10
我尝试了下面的代码,但出现了错误

Verbal[verbal>20]

**Error:**'>' not supported between instances of 'list' and 'int'
如果你能用代码提供解释,那将是一个很棒的python新手

state = ['NY','NJ','DC','Carolina']
verbal = [50,10,25,40]
math = [100,90,50,10]
for idx, _ in enumerate(verbal):
  if verbal[idx] > 20:
    print("State {0}: Verbal {1}: Math {2}".format(state[idx], verbal[idx], math[idx]))
或者使用元组:

satScore = [('NY', 50, 100), ('NJ', 10, 90), ('DC', 25, 50), ('Carolina', 40, 10)]
for idx, _ in enumerate(satScore):
  if satScore[idx][1] > 20:
    print("State {0}: Verbal {1}: Math {2}".format(satScore[idx][0], satScore[idx][1], satScore[idx][2]))
输出:

纽约州:口头50:数学100
州议会:口头25:数学50

卡罗莱纳州:口头40:Math 10

您将收到一个错误,因为列表不支持以这种方式选择数据

您可以使用列表理解根据您想要的内容仅选择分数,这与您的概念非常相似,但应用于列表中的每个项目,并仅返回匹配的项目

Verbal_above20 = [i for i in verbals if i > 20]

但由于您存储数据的方式,很难获取与密钥对应的数据的其他部分。我强烈建议您查看有关清洁和咀嚼数据的工作。

您的列表名称是什么?
verball
是否包含它的所有分数?@BernardL..yes verball包含它的所有分数..@jpp。。请参见上文以了解更多说明。如果需要更多信息,请告诉我