Более быстрая реализация "switch-case" в python - PullRequest
0 голосов
/ 17 декабря 2018

Я сделал приведенный ниже скрипт для чтения строкового буфера и распределения чисел по 6 различным переменным.Я нашел пример, делающий то же самое в C # с использованием метода switch-case, и когда я попробовал аналогичный метод в python (как показано ниже), я получил желаемый результат, но чтение буфера занимает слишком много времени (более секунды),Этот сценарий является просто способом проверки метода, и он будет частью большего управляющего кода без обратной связи, поэтому время цикла действительно важно.Есть ли более быстрый способ сделать это в Python?Я использую Python 2.7.Заранее спасибо.

Julio = '123.5,407.4,21.6,9.7,489.2,45.9/\n'

letter = ''
x_c = '' 
y_c = '' 
z_c = '' 
theta_c = '' 
ux_c = '' 
uy_c = '' 
variable_number = 1

def one():
    global x_c
    x_c += letter

def two():
    global y_c
    y_c += letter

def three():
    global z_c
    z_c += letter

def four():
    global theta_c
    theta_c += letter

def five():
    global ux_c
    ux_c += letter

def six():
    global uy_c
    uy_c += letter

def string_reader(variable_number):
    switcher = {
        1: one,
        2: two,
        3: three,
        4: four,
        5: five,
        6: six
    }
    # Get the function from switcher dictionary
    func = switcher.get(variable_number, lambda: 'Invalid variable number')
    # Execute the function
    print func()

for letter in Julio:
    if (letter != '/') and (letter != ',') and (letter != '\n'):
        string_reader(variable_number)
    elif (letter == '/'):
        break
    elif (letter == '\n'):
        break
    else:
        variable_number = variable_number + 1


print x_c, y_c, z_c, theta_c, ux_c, uy_c

1 Ответ

0 голосов
/ 17 декабря 2018

Err ... Разве вы не усложняете вещи?

>>> Julio = '123.5,407.4,21.6,9.7,489.2,45.9/\n'
>>> x_c, y_c, z_c, theta_c, ux_c, uy_c = Julio.strip().rstrip("/").split(",")[:6]
...