если и элиф повторение - PullRequest
       21

если и элиф повторение

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

Я хотел бы знать, есть ли способ сделать этот тип кода более лаконичным и автоматизированным, чтобы мне не приходилось повторять операторы elif снова и снова.

ga - это списоккумулятивные секунды от 1 до любых секунд, которые я записал, и я хотел бы отделить каждый час соответствующим кадром данных от этого часа, есть ли способ сделать это намного проще?

for i in range(len(ga)):
 if ga[i]<=3600:
    j.append(i)
 elif ga[i]<=7200:
    u.append(i)
 elif ga[i]<=10800:
    k.append(i)
 elif ga[i]<=14400:
    b.append(i)
 elif ga[i]<=18000:
    bi.append(i)
 elif ga[i]<=21600:
    bit.append(i)
 elif ga[i]<=25200:
    bitb.append(i)
 elif ga[i]<=28800:
    bitc.append(i)
 elif ga[i]<=32400:
    bitd.append(i)
 elif ga[i]<=36000:
    bite.append(i)

Ответы [ 2 ]

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

со списком:

r = [[idx for idx, val in enumerate(
    ga) if 3600*level < val <= 3600*(1+level)] for level in range(9)]

(j, u, k, b, bi, bit, bitc, bitd, bite) = r
0 голосов
/ 16 февраля 2019

Может быть, это не общее решение, но основа проблемы, вы можете сделать творческое решение.Как и в следующем коде

# Put variable name in var
# These are empty lists that have already been defined
var = ["j", "u", "k", "b", "bi", "bit", "bitb", "bitc", "bitd", "bite"]
for i in range(len(ga)):
    # Finding var index base of ga[i] value.
    var_index = ga[i] // 3600
    if ga[i] % 3600 == 0 and ga[i] > 0:
        var_index -= 1
    # Add the ga index to the corresponding list
    eval(var[var_index] + ".append(" + str(i) + ")")

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

# Define dictionary 
ch = {"j":[], "u":[], "k":[], "b":[], "bi":[],
      "bit":[], "bitb":[], "bitc":[], "bitd":[], "bite":[]}
# Dictionary keys
key = ["j", "u", "k", "b", "bi", "bit", "bitb", "bitc", "bitd", "bite"]
for i in range(len(ga)):
    # Finding key index base of ga[i] value.
    key_index = ga[i] // 3600
    if ga[i] % 3600 == 0 and ga[i] > 0:
        key_index -= 1
    # Add the ga index to the corresponding list in the dictionary
    ch[key[key_index]].append(i)
...