LINUX.ORG.RU

Питон, генератор списков.

 ,


0

1

В догонку к предыдущей теме:python, учеба, списки.
сделал такой код:

range(len(
def reverse_roman(text):
    roman_dict = {'I': 1, 'V':5, 'X':10, 'L':50,
     'C':100, 'D':500, 'M':1000}

    numbers = [roman_dict[ch] for ch in text]

    for n in range(len(numbers) - 1):
        if numbers[n] < numbers[n + 1]:
            numbers[n] = -numbers[n]

    return sum(numbers)
Вопрос. Как переписать цикл (и стоит ли) в генератор sum(и т.д.)?



Последнее исправление: masterdilly (всего исправлений: 7)
Ответ на: комментарий от vvn_black

Зачем столько циклов? )

Затем.

In [1]: XXX = {"a": 0, "b": 1, "c": 2}

In [2]: def check_if(var):
   ...:     if var in XXX:
   ...:         return True
   ...:     else:
   ...:         return False
   ...:

In [4]: def check_exp(var):
   ...:     try:
   ...:         _ = XXX[var]
   ...:         return True
   ...:     except KeyError:
   ...:         return False

In [10]: dis.dis(check_if)
  2           0 LOAD_FAST                0 (var)
              3 LOAD_GLOBAL              0 (XXX)
              6 COMPARE_OP               6 (in)
              9 POP_JUMP_IF_FALSE       16

  3          12 LOAD_GLOBAL              1 (True)
             15 RETURN_VALUE

  5     >>   16 LOAD_GLOBAL              2 (False)
             19 RETURN_VALUE
             20 LOAD_CONST               0 (None)
             23 RETURN_VALUE

In [11]: dis.dis(check_exp)
  2           0 SETUP_EXCEPT            18 (to 21)

  3           3 LOAD_GLOBAL              0 (XXX)
              6 LOAD_FAST                0 (var)
              9 BINARY_SUBSCR
             10 STORE_FAST               1 (_)

  4          13 LOAD_GLOBAL              1 (True)
             16 RETURN_VALUE
             17 POP_BLOCK
             18 JUMP_FORWARD            18 (to 39)

  5     >>   21 DUP_TOP
             22 LOAD_GLOBAL              2 (KeyError)
             25 COMPARE_OP              10 (exception match)
             28 POP_JUMP_IF_FALSE       38
             31 POP_TOP
             32 POP_TOP
             33 POP_TOP

  6          34 LOAD_GLOBAL              3 (False)
             37 RETURN_VALUE
        >>   38 END_FINALLY
        >>   39 LOAD_CONST               0 (None)
             42 RETURN_VALUE

Вообще exception лучше избегать там где это не нужно.

xpahos ★★★★★
()

Попробуй сконвертировать числа больше 3999.

xpahos ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.