首页 > 解决方案 > 如何对列表进行子集化,直到满足特定条件(使用逻辑运算符、循环或函数)?

问题描述

我有一个 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 的新手,如果你能用代码提供解释,那就太好了!

标签: pythonpython-3.xlist

解决方案


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:数学 10


推荐阅读