Форум сайта python.su
0
Доброго времени суток.
Объясните пожалуйста почему выражение в 5-ой строке полностью взято в квадратные скобки?
from random import randint as rand a = [] for i in range(7): c = [] [c.append(rand(-10, 10)) for x in range(8)] a.append(c) count = 0 for i in a: for x in i: if x < 0: count += 1 print("Число отрицательных элементов", count)
Отредактировано Senhion (Авг. 14, 2012 15:20:16)
Офлайн
Потому что этому коду место на govnokod.ru. Это пример, как писать не надо.
Офлайн
0
Я тоже считаю, что раз взялся изучать питон - то буду следовать python-way …
Подскажите пожалуйста тогда как реализовать данный функционал правильно с точки зрения python?
Офлайн
52
Скажите, какую задачу вы решаете?
Посчитать количество отрицательных элементов в случайном списке можно, например, так:
>>> from random import randint >>> len(filter(lambda x: x < 0, [randint(-10, 10) for _ in xrange(100)])) 57
>>> from random import randint >>> integers = [] >>> for _ in xrange(100): ... integer = randint(-10, 10) ... integers.append(integer) ... >>> integers [-6, 5, 1, 5, -1, -10, -9, 1, -7, 10, 3, 0, 7, 7, -6, 4, 10, 8, 5, 3, 1, 4, -8, 8, 9, -3, 6, 3, -2, 9, -3, -6, -1, -10, -8, 7, 1, -8, 7, 5, -8, 10, -1, 2, 2, 0 , -8, 3, 10, -7, 7, -2, -10, 7, 8, 7, 9, 7, -3, -7, 5, -5, 5, 4, -6, -2, -2, 10, 0, -2, 8, -4, -1, -3, 7, 4, -2, 5, -4, -9, -6, 8, -4, 0, 1, -8, 10, -4, 3, -6, 9, -10, 0, 0, 9, 1, -6, 9, -7, 3] >>> count = 0 >>> for integer in integers: ... if integer < 0: ... count += 1 ... >>> count 42
Отредактировано fata1ex (Авг. 14, 2012 16:12:03)
Офлайн
75
5. Это list compression. Есть описания в доке и в книжке Лутца.
int = randint(-10, 10) >>> int =5 >>> int(4.555555555555555) Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> int(4.555555555555555) TypeError: 'int' object is not callable >>>

Отредактировано Singularity (Авг. 14, 2012 16:06:12)
Офлайн
52
Спасибо, исправил.
Офлайн
понятно что list compression, просто не вдаваясь в смысл всего кода, логичней было б
c = [rang(-10, 10) for x in xrange(8)]
Офлайн
75
dimy44
>сегодня 15:18:59
Senhion Объясните пожалуйста почему выражение в 5-ой строке полностью взято в квадратные скобки?
Я и ответил.
Офлайн
52
Singularity
Это list compression
dimy44
понятно что list compression
Офлайн
14
SenhionПростой вариант влоб:
Подскажите пожалуйста тогда как реализовать данный функционал правильно с точки зрения python?
from random import randint as rand a = [] for i in range(7): c = [] for x in range(8): c.append(rand(-10, 10)) a.append(c) count = 0 for i in a: for x in i: if x < 0: count += 1 print("Число отрицательных элементов", count)
from random import randint as rand lst = [[randint(-10,10) for x in range(7)] for y in range(8)] count = sum(1 for l in lst for x in l if x<0) print("Число отрицательных элементов", count)
Офлайн