Как я могу реализовать счетчик для этого цикла для списка на понимание?

Его другой способ записи IIFE (непосредственное выражение функции).

Другой способ записи -

(function( args ) {})()

, такой же, как

!function ( args ) {}();
0
задан kalehmann 18 March 2019 в 19:04
поделиться

1 ответ

В настоящее время вы не можете написать понимание списка, которое было бы так легко прочитать, как ваш цикл for. Вместо этого используйте itertools.accumulate.

>>> list(accumulate(range(1,11), lambda acc, x: acc + 1/x))
[1, 1.5, 1.8333333333333333, 2.083333333333333, 2.283333333333333, 2.4499999999999997, 2.5928571428571425, 2.7178571428571425, 2.8289682539682537, 2.9289682539682538]

В Python 3.8 выражения присваивания позволят вам написать

% ./python.exe
Python 3.8.0a2 (tags/v3.8.0a2:23f4589b4b, Mar 18 2019, 15:16:44)
[Clang 10.0.0 (clang-1000.11.45.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> m = 0
>>> [m := m + 1/x for x in range(1,11)]
[1.0, 1.5, 1.8333333333333333, 2.083333333333333, 2.283333333333333, 2.4499999999999997, 2.5928571428571425, 2.7178571428571425, 2.8289682539682537, 2.9289682539682538]

Обратите внимание, что m необходимо инициализировать, прежде чем его можно будет использовать в понимании списка Тем не менее.

0
ответ дан chepner 18 March 2019 в 19:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: