Python: искажение логического массива, документация - PullRequest
0 голосов
/ 08 марта 2019

Где я могу найти документацию по коду ниже? Почему умножая массив на 2, вставляет еще один False в массив?

print( [False] * 2 )

output: [False, False]

Ответы [ 3 ]

4 голосов
/ 08 марта 2019

Это удвоило список.В основном умножение количества ссылок внутри списка.Это ожидаемое поведение.

print(['a', 'b', 'c'] * 3)
['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
0 голосов
/ 08 марта 2019

Python имеет несколько operator методов - метод умножения называется __mul__ (https://docs.python.org/3.7/library/operator.html#operator.mul). Любой класс / модуль может определить свой собственный метод __mul__, который будет запускаться при умножении ( что происходит, когда вы используете *)

Если вы посмотрите на список, вы увидите, что он определен __mul__:

 ["a", "b"].__mul__
 <method-wrapper '__mul__' of list object at 0x7efc163fe9d0>

Вы можете вызвать этот метод с помощью номера:

["a", "b"].__mul__(2)
["a", "b", "a", "b"]
0 голосов
/ 08 марта 2019

Для умножения чисел внутри list вам нужно iterate через него.То, как вы умножаете, дает результат, который вы получаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...