Как мне отформатировать переменные в Python - PullRequest
0 голосов
/ 15 февраля 2019

У меня сейчас проблема в python, я пытаюсь пройти через 6 массивов, проверяя, есть ли отрицательное число или нет, и затем добавляя его к соответствующей переменной.

I 'Я пробовал разные вещи, чтобы исправить это, однако нет реальной документации, которую я могу найти в Интернете, которая поможет мне

BusA = ["-1","1","-1","1"]
BusB = ["-1","1","-1","1"]
BusC = ["-1","1","-1","1"]
BusD = ["-1","1","-1","1"]
BusE = ["-1","1","-1","1"]
BusF = ["-1","1","-1","1"]

Buses = "ABCDEF"

BusALate, BusBLate, BusCLate, BusDLate, BusELate, BusFLate = 0, 0, 0, 0, 0, 0

for c in Buses:
  Array = eval("Bus" + str(c))
  for i in Array:
    if(int(i) < 0):
      eval("Bus"+c+"Late") += 1

print(BusALate, BusBLate, BusCLate, BusDLate, BusELate, BusFLate)

Если возможно, мне просто нужен способ отформатировать переменную в if, чтобы она могла постепенноизмените его на BusALate, BusBLate и т. д. и добавьте, когда он найдет отрицательное число.

Ответы [ 3 ]

0 голосов
/ 15 февраля 2019

Опираясь на предложение Тьерри Латюля , вот как словари могут упростить ваш код:

bus_schedules= {
    "A" : ["-1","1","-1","1"],
    "B" : ["-1","1","-1","1"],
    "C" : ["-1","1","-1","1"],
    "D" : ["-1","1","-1","1"],
    "E" : ["-1","1","-1","1"],
    "F" : ["-1","1","-1","1"]
}

bus_late = {"A" : 0, "B" : 0, "C" : 0, "D" : 0, "E" : 0, "F" : 0}

for (bus_name, bus_times) in bus_schedules.items():
    for i in bus_times :
        if (int(i) < 0):
            bus_late[bus_name]+=1

print(bus_late)
0 голосов
/ 15 февраля 2019

Преобразование строки и понимание слова в один шаг:

busses = {'A':["-1","1","-1","1"],
          'B': ["-1","1","-1","1"],
          'C': ["-1","1","-1","1"],
          'D': ["-1","1","-1","1"],
          'E': ["-1","1","-1","1"],
          'F': ["-1","1","-1","1"]}

busses = {key: [(value + 1) if value < 0 else value
                for x in lst
                for value in [int(x)]]
          for key, lst in busses.items()}
print(busses)

Это дает

{'A': [0, 1, 0, 1], 
 'B': [0, 1, 0, 1], 
 'C': [0, 1, 0, 1], 
 'D': [0, 1, 0, 1], 
 'E': [0, 1, 0, 1], 
 'F': [0, 1, 0, 1]}
0 голосов
/ 15 февраля 2019
import numpy as np

buses =  np.array([[-1,1,-1,1],
                   [-1,1,-1,1],
                   [-1,1,-1,1],
                   [-1,1,-1,1],
                   [-1,1,-1,1],
                   [-1,1,-1,1]])

print(np.sum(buses<0, axis=1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...