Как составлять списки, пока не будет выполнено определенное условие (с использованием логических операторов, циклов или функции)? - PullRequest
0 голосов
/ 28 октября 2018

У меня был текстовый файл, который содержал информацию о баллах 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, если вы могли бы предоставить объяснение с кодом, который будет отличным!

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Вы получаете ошибку, потому что список не поддерживает выбор данных таким образом.

Вы можете использовать понимание списка, чтобы выбрать только оценки в соответствии с тем, что вы хотите, что очень похоже на вашу концепциюно применяется к каждому элементу в списке и возвращает только те, которые соответствуют.

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

Но из-за способа хранения ваших данных будет трудно получить другие части ваших данных, соответствующиеключ.Я настоятельно рекомендую вам проверить панд для работы, связанной с очисткой и копанием данных.

0 голосов
/ 28 октября 2018
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
Штат DC: Устный 25:Математика 50
Штат Каролина: словесные 40: Математика 10

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...