Найти - Пользователи
Полная версия: Простой вопрос по синтаксису, квадратные скобки
Начало » Python для новичков » Простой вопрос по синтаксису, квадратные скобки
1 2 3
Singularity
fata1ex
хз как переводится.
В математике так задают множества, но там без названия эта штука
fata1ex
Я как бы к тому, что это list comprehension, а не compression.
odnochlen
Без пафоса не прожить.
Senhion
Singularity
Это list compression. Есть описания в доке и в книжке Лутца.
Большое спасибо за ответ - именно то что и требовалось - дальше можно уже гуглить когда знаешь как это называется.

odnochlen
Посложнее:
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)
В задаче интересует реализация 2х моментов: 1) создание 2х мерного массива 2) подсчет отрицательных значений в нем. Извиняюсь что сразу не определил их в первом посте.
В задаче “посложнее” возникает вопрос: как при подсчете count реализован обход 2х мерного массива?
count = sum(1 for l in lst for x in l if x<0)
odnochlen
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)
reclosedev
odnochlen
Аналог в императивном стиле:
Это больше похоже на:
count = sum([1 for l in lst for x in l if x<0])

А этот пример
odnochlen
count = sum(1 for l in lst for x in l if x<0)
все-таки PEP 289 - Generator Expressions

Ссылки для ТС:
http://docs.python.org/tutorial/datastructures.html#list-comprehensions
http://www.python.org/dev/peps/pep-0202/
Senhion
как при подсчете count реализован обход 2х мерного массива?
http://docs.python.org/tutorial/datastructures.html#nested-list-comprehensions
odnochlen
reclosedev
Это больше похоже на:
Влом было генератор мутить. Но логика и так понятна.
List compehension от generator expression отличаются лишь квадратными скобками, так ведь?

Вот с генератором
def gen(lst):
    for l in lst:
        for x in l:
            if x < 0:
                yield(1)
# считает сумму элементов
count = sum(gen(lst))
py.user.next
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
>>>
odnochlen
Список не нужен.

py.user.next
sum(matr, [])
Как это работает?

256 нах!
py.user.next
>>> help(sum)
>>> lst = [[1], [2]]
>>> sum(lst, [])
[1, 2]
>>>

odnochlen
Список не нужен.
для len() нужен список
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