Форум сайта python.su
75
fata1ex
хз как переводится.
В математике так задают множества, но там без названия эта штука
Офлайн
52
Я как бы к тому, что это list comprehension, а не compression.
Офлайн
14
Без пафоса не прожить.
Офлайн
0
SingularityБольшое спасибо за ответ - именно то что и требовалось - дальше можно уже гуглить когда знаешь как это называется.
Это list compression. Есть описания в доке и в книжке Лутца.
odnochlenВ задаче интересует реализация 2х моментов: 1) создание 2х мерного массива 2) подсчет отрицательных значений в нем. Извиняюсь что сразу не определил их в первом посте.
Посложнее: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)
count = sum(1 for l in lst for x in l if x<0)
Отредактировано Senhion (Авг. 15, 2012 08:22:23)
Офлайн
14
SenhionТебя абсолютно никто не заставляет использовать решения, которые ты не понимаешь (а с помощью функциональщины / списковых выражений в питоне этого можно достичь очень быстро).
В задаче “посложнее” возникает вопрос: как при подсчете count реализован обход 2х мерного массива?
count = sum(1 for l in lst for x in l if x<0)
sum_lst = [] for l in lst: for x in l: if x < 0: sum_list.append(1) # считает сумму элементов count = sum(sum_lst)
Офлайн
173
odnochlenЭто больше похоже на:
Аналог в императивном стиле:
count = sum([1 for l in lst for x in l if x<0])
odnochlenвсе-таки PEP 289 - Generator Expressions
count = sum(1 for l in lst for x in l if x<0)
Senhionhttp://docs.python.org/tutorial/datastructures.html#nested-list-comprehensions
как при подсчете count реализован обход 2х мерного массива?
Отредактировано reclosedev (Авг. 15, 2012 17:37:44)
Офлайн
14
reclosedevВлом было генератор мутить. Но логика и так понятна.
Это больше похоже на:
def gen(lst): for l in lst: for x in l: if x < 0: yield(1) # считает сумму элементов count = sum(gen(lst))
Офлайн
857
Senhion
В задаче интересует реализация 2х моментов: 1) создание 2х мерного массива 2) подсчет отрицательных значений в нем.
>>> matr = [[1, -1, 2, -2, 3], [1, -1, 2, -2, -3]] >>> len([i for i in sum(matr, []) if i < 0]) 5 >>>
Офлайн
14
Список не нужен.
py.user.nextКак это работает?sum(matr, [])
Отредактировано odnochlen (Авг. 16, 2012 15:52:05)
Офлайн
857
>>> help(sum) >>> lst = [[1], [2]] >>> sum(lst, []) [1, 2] >>>
odnochlenдля len() нужен список
Список не нужен.
Отредактировано py.user.next (Авг. 17, 2012 01:35:55)
Офлайн