ФорумПрограммированиеPython → Вопрос по циклу for

Вопрос по циклу for

  • lowfuck

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 23 февраля 2011 г. 14:03

    Есть например 3 переменные:
    a = 1
    b = 2
    c = 3

    Я хочу пройтись по ним циклом и изменить каждую:
    for i in (a,b,c):
    i = 5

    Но такой подход не работает. Как лучше всё это организовать или я что-то не так делаю?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 23 февраля 2011 г. 14:07, спустя 4 минуты 6 секунд

    о, кстати, а в пайтоне есть variable variables? Ну $foo = 'bar'; $$foo = 'bar'
  • adw0rd

    Сообщения: 22915 Репутация: N Группа: в ухо

    Spritz 23 февраля 2011 г. 15:00, спустя 53 минуты 6 секунд

    lowfuck, как-то так:


    l = [1, 2, 3]
    for k, v in enumerate(l):
       l[k] = 5
    http://blog.swlogic.eu/2010/09/30/python-parametry-funkcij-napominalka/
    Спустя 177 сек.

    о, кстати, а в пайтоне есть variable variables? Ну $foo = 'bar'; $$foo = 'bar'
    http://stackoverflow.com/questions/3061/calling-a-function-from-a-string-with-the-functions-name-in-python
    adw/0
  • vasa_c

    Сообщения: 3129 Репутация: N Группа: в ухо

    Spritz 23 февраля 2011 г. 22:00, спустя 7 часов 21 секунду

    (a,b,c) = [5 for i in (a,b,c)];
    :)
  • adw0rd

    Сообщения: 22915 Репутация: N Группа: в ухо

    Spritz 24 февраля 2011 г. 0:54, спустя 2 часа 53 минуты 54 секунды

    vasa_c, крут, как же я не допер… ночь наверное потомучто была :(
    +1 в карму
    adw/0
  • lowfuck

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 24 февраля 2011 г. 9:10, спустя 8 часов 15 минут 42 секунды

    vasa_c, о да, твоё кунг-фу лучше моего :) Может ещё подскажешь как лучше туда if засунуть (напр. 5 if i>0).
  • vasa_c

    Сообщения: 3129 Репутация: N Группа: в ухо

    Spritz 24 февраля 2011 г. 9:26, спустя 16 минут 43 секунды

    def hnya(i):
    if i > 0:
    return 5
    else:
    return -5

    (a,b,c) = [hnya(i) for i in (a,b,c)];

    или лямбду может можно впендюрить
  • adw0rd

    Сообщения: 22915 Репутация: N Группа: в ухо

    Spritz 24 февраля 2011 г. 9:39, спустя 12 минут 47 секунд

    (a,b,c) = [5 for i in (a,b,c)];


    (a,b,c) = [5 for i in (a,b,c) if i > 0]
    Спустя 93 сек.
    (a,b,c) = [5 if i > 1 else 3 for i in (a,b,c)]
    adw/0
  • lowfuck

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 24 февраля 2011 г. 9:42, спустя 3 минуты 13 секунд

    Всем спасибо!

Пожалуйста, авторизуйтесь, чтобы написать комментарий!