Питоновский способ написать цикл for, который не использует индекс цикла

Это связано с следующим кодом, который использует цикл for для генерации ряда случайных смещений для использования в другом месте программы.

Индекс этого цикла цикла не используется, и это приводит к тому, что код «оскорбительный» выделяется как предупреждение от Eclipse / PyDev

def RandomSample(count): pattern = [] for i in range(count): pattern.append( (random() - 0.5, random() - 0.5) ) return pattern 

Поэтому мне нужен либо лучший способ написать этот цикл, который не нуждается в индексе цикла, или способ сказать PyDev игнорировать этот конкретный экземпляр неиспользуемой переменной.

У кого-нибудь есть предложения?

7 Solutions collect form web for “Питоновский способ написать цикл for, который не использует индекс цикла”

 randomSample = [(random() - 0.5, random() - 0.5) for _ in range(count)] 

Пример вывода, для count=10 и предполагая, что вы имеете в виду функцию Standard Library random() :

 [(-0.07, -0.40), (0.39, 0.18), (0.13, 0.29), (-0.11, -0.15),\ (-0.49, 0.42), (-0.20, 0.21), (-0.44, 0.36), (0.22, -0.08),\ (0.21, 0.31), (0.33, 0.02)] 

Если вам действительно нужно сделать его функцией, вы можете сокращать его с помощью lambda :

 f = lambda count: [(random() - 0.5, random() - 0.5) for _ in range(count)] 

Таким образом, вы можете назвать это так:

 >>> f(1) f(1) [(0.03, -0.09)] >>> f(2) f(2) [(-0.13, 0.38), (0.10, -0.04)] >>> f(5) f(5) [(-0.38, -0.14), (0.31, -0.16), (-0.34, -0.46), (-0.45, 0.28), (-0.01, -0.18)] >>> f(10) f(10) [(0.01, -0.24), (0.39, -0.11), (-0.06, 0.09), (0.42, -0.26), (0.24, -0.44) , (-0.29, -0.30), (-0.27, 0.45), (0.10, -0.41), (0.36, -0.07), (0.00, -0.42)] >>> 

вы получаете идею …

Только для справки о игнорировании переменных в PyDev

По умолчанию pydev будет игнорировать следующие переменные

 ['_', 'empty', 'unused', 'dummy'] 

Вы можете добавить больше, передав параметры супрессии

 -E, --unusednames ignore unused locals/arguments if name is one of these values 

Ссылка: http://eclipse-pydev.sourcearchive.com/documentation/1.0.3/PyCheckerLauncher_8java-source.html

Как насчет itertools.repeat :

 import itertools count = 5 def make_pat(): return (random() - 0.5, random() - 0.5) list(x() for x in itertools.repeat(make_pat, count)) 

Пример вывода:

 [(-0.056940506273799985, 0.27886450895662607), (-0.48772848046066863, 0.24359038079935535), (0.1523758626306998, 0.34423337290256517), (-0.018504578280469697, 0.33002406492294756), (0.052096928160727196, -0.49089780124549254)] 

Поздно к партии, но вот потенциальная идея:

 def RandomSample(count): f = lambda: random() - 0.5 r = range if count < 100 else xrange # or some other number return [(f(), f()) for _ in r(count)] 

Строго говоря, это более или менее то же самое, что и другие ответы, но он делает две вещи, которые кажутся мне приятными.

Во-первых, он удаляет этот дублирующий код, который у вас есть, для записи random() - 0.5 раза дважды, помещая его в лямбда.

Во-вторых, для определенного диапазона размеров он предпочитает использовать xrange() вместо range() чтобы не создавать лишний список чисел, которые вы собираетесь выбросить. Вы можете настроить точное число, потому что я не играл с ним вообще, я просто подумал, что это может быть потенциальной проблемой эффективности.

Должен быть способ подавить ошибки анализа кода в PyDev, например:

http://pydev.org/manual_adv_assistants.html

Кроме того, PyDev будет игнорировать неиспользуемые переменные, начинающиеся с подчеркивания, как показано ниже:

http://pydev.org/manual_adv_code_analysis.html

Попробуй это:

 while count > 0: pattern.append((random() - 0.5, random() - 0.5)) count -= 1 
 import itertools, random def RandomSample2D(npoints, get_random=lambda: random.uniform(-.5, .5)): return ((r(), r()) for r in itertools.repeat(get_random, npoints)) 
  • использует random.uniform() явно
  • возвращает итератор вместо списка
  • Перемещение итерации в цикл for
  • Python / Excel: сравнить заданное значение с суммарным значением
  • Обратить строку без использования reverse () или ?
  • Именование циклов в Python
  • Инициализация Python через атрибуты объекта
  • Самая длинная вычислительная сложность подстроки
  • Список Python не перемещается в цикле
  • Какая версия python добавила условие else для циклов?
  •  
    Interesting Posts for Van-Lav

    Хорошая практика повторного использования модульного теста для различных функций в Python

    Количество отсчетов 0 с от

    В Python, как распечатать сообщение об ошибке без печати трассировки и закрыть программу, когда условие не выполняется?

    В pytest, как пропустить или пропустить определенные светильники?

    Парсер BeautifulSoup добавляет точки с запятой голым амперсандам, изменяя URL-адреса?

    PySide: QWidget не рисует цвет фона

    Как я могу скрестить слово с фактором?

    Есть ли эквивалент эквивалента памяти MATLAB в numpy?

    Как повторить попытку urllib2.request при сбое?

    Stdout, захваченный из трубы в Python, усечен

    Как настроить vim для установки softtabs условно?

    Как уменьшить память, используемую большим списком в python

    исключая типы файлов при упаковке об / мин

    sklearn LogisticRegression и изменение порога по умолчанию для классификации

    Есть ли способ отсоединить графики matplotlib, чтобы вычисления могли продолжаться?

    Python - лучший язык программирования в мире.