Как сделать анимированные живые обои для Android? [закрыто]

map вообще не относится к декартовому произведению, хотя я представляю, что кто-то, хорошо разбирающийся в функциональном программировании, может придумать какое-то непонятное для понимания способ создания одного с помощью map.

map в Python 3 эквивалентен этому:

def map(func, iterable):
    for i in iterable:
        yield func(i)

, и единственная разница в Python 2 заключается в том, что он создаст полный список результатов, чтобы вернуть все в один раз вместо yield ing.

Хотя соглашение Python обычно предпочитает использование списков (или выражений генератора) для достижения того же результата, что и вызов map, особенно если вы используете лямбда-выражение как первый аргумент:

[func(i) for i in iterable]

В качестве примера того, что вы просили в комментариях к вопросу - «превратить строку в массив», «массивом» вы, вероятно, хотите либо кортеж, либо (оба они немного похожи на массивы с других языков) -

 >>> a = "hello, world"
 >>> list(a)
['h', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd']
>>> tuple(a)
('h', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd')

Использование map здесь будет, если вы начнете с list строк вместо одной строки - map могут их перечислять индивидуально:

>>> a = ["foo", "bar", "baz"]
>>> list(map(list, a))
[['f', 'o', 'o'], ['b', 'a', 'r'], ['b', 'a', 'z']]

Обратите внимание, что map(list, a) эквивалентно в Python 2, но в Python 3 вам нужен вызов list, если вы хотите делать что угодно, кроме подачи в контур for (или функцию обработки, такую ​​как sum, который требует только итерации, а не последовательности). Но также обратите внимание на то, что обычно предпочтительным является понимание списка:

>>> [list(b) for b in a]
[['f', 'o', 'o'], ['b', 'a', 'r'], ['b', 'a', 'z']]
30
задан Brian Tompsett - 汤莱恩 5 April 2017 в 18:14
поделиться