Найти - Пользователи
Полная версия: Генераторы списков
Начало » Python для новичков » Генераторы списков
1
vrabey
скажите а делают вообще так?:
например надо назначить свойство десяти кнопкам
или скопировать n файлов
используют ли для этого не цикл, а генератор
или map
def set_text(self):
    [self.but_tool[x].setText(str(x)) for x in self.but_tool]
то есть можно ли использовать генератор списков если не надо возвращать список

и ещё :
в классе можно принято ли использовать выражение с условием
не в методе
так например
class A:
    def __init__(self, n=None):
        self.n = n
        self.lab = Lab()
        if not self.n is None:
            self.lab.setText(self.n)


или всё же лучше создать метод
py.user.next
vrabey
используют ли для этого не цикл, а генератор
или map
Похоже на ошибку, будто имя стёрли. А код должен быть таким, чтобы понятно было при первом прочтении, что он правильный.
Когда пройдёт N лет и ты забудешь вообще, что это за программа, тогда такие остановки дадут о себе знать.

vrabey
в классе можно принято ли использовать выражение с условием
не в методе
__init__ - это обычный метод, он только не возвращает значение. Но в нём должно быть только то, что относится к инициализации экземпляра.
vrabey
py.user.next
Когда пройдёт N лет и ты забудешь вообще, что это за программа, тогда такие остановки дадут о себе знать.
то есть при использовании генератора ухудшается только читаемость?
и если случай не сложный и откоментирован то можно
я правильно понял ?
bs0d
py.user.next
я слаб в написании многопотока, поэтому в ините использую вызов функций, например:

class abc(object):
    def __init___(self, some_value):
        if self.abc(some_value):
            self.qwe()
...
if __name__=='__main__':
    from multiprocessing.dummy import Pool
    with Pool(20) as pool:
        pool.map(abc, some_value)

есть решение получше?
bs0d
vrabey
думаю все зависит от того, насколько этот код будет использоваться в дальнейшем

раньше я делал нечто:
def load_data(filename):
    with open(filename, 'r') as file:
        data_list = [line.strip() for line in file]
        file.close()
    return data_list
r = load_data('abc.txt')
теперь не заморачиваюсь:
r = open('abc.txt').read().splitlines()
py.user.next
vrabey
то есть при использовании генератора ухудшается только читаемость?
Не, ещё память тратится на создание списка. Всё-таки список - это не генератор.
Так что лучше переводи “list comprehension” как “списочное включение”. Потому что генератор - это вполне определённое понятие. Перевода устойчивого нет, но надо говорить так, чтобы сходу было понятно, про что речь.

Так не пишут, наверное, потому, что как раз память и тратится (время на её выделение). Лишнее выделение памяти - это плохо.

vrabey
и если случай не сложный и откоментирован то можно
Можно-то много чего, но смотри, к чему ты придёшь всё равно. Вот к чему придёшь в итоге (как все приходят), так и делай сразу.


bs0d
теперь не заморачиваюсь:
Файл не закрываешь. Он закроется, конечно, но принято использовать with, который гарантирует закрытие.

bs0d
я слаб в написании многопотока
Вот методом тыка это изучать крайне тяжело. Прочитай какую-нибудь книгу сначала.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB