Учет списка и функция%
Когда я использую следующий код
[i for i in range(-9, 10, 2) if not i%3)]
это дает
> (-9, -3, 3, 9)
Почему он дает ответ? Что означает 'i%3'
?
Спасибо.
- уникальные значения между двумя списками
- Python: как одновременно добавить два списка в список?
- Способ одинаково обрабатывать одиночные валы Python и списки валов?
- Как преобразовать вывод в список, чтобы подсчитать его количество?
- Элегантный способ получить все x-координаты
В вашем примере %
– это оператор modulo . a % b
возвращает остаток a / b
.
Итак, в вашем примере цикл проходит:
[-9, -7, -5, -3, -1, 1, 3, 5, 7, 9]
-9 % 3
равно 0, потому что -9 делится на 3, и, следовательно, нет остатка. Однако 5 % 3
возвращает 2, потому что 3 идет в 5 раз, а 5 - 3 == 2
.
not i % 3
немного сложнее. Сначала оценивается i % 3
. Если результат больше 0, то он считается True
. not
является булевым оператором, который получает отрицание булева. Так что not True
является False
(а not False is True
).
0
считается False
, поэтому, если i % 3 == 0
, то i
будет включен в новый список.
Теперь причина, по которой print("%s %s", ("hello", "world"))
печатает «привет мир», потому что это не оператор modulo. Это форматирование строк . Документы объяснят это лучше меня: p. Просто случается, что %
также используется.
i%3
– это остаток при делении i
на 3. Однако он затем преобразуется в логическое (истинное / ложное) значение оператором not
; python делает это, делая 0 false
и любое другое число true
. Так что not i%3
истинно, когда i%3
равно 0; другими словами, когда i
делится на 3.
range(-9,10,2)
производит целые числа, начинающиеся с -9, приращение на 2, если они меньше 10. Другими словами, нечетные целые числа от -9 до +9. Таким образом, комбинация состоит в том, чтобы выбрать нечетные целые числа, делящиеся на 3 между -9 и +9, которые являются целыми числами, которые вы показываете (-9, -3, 3, 9)
- Как преобразовать десятичный в двоичный список в python
- как пропустить None, сохраняя кортеж в списке?
- Путаница о результатах среза списка Python
- Как преобразовать список элементов в их типы по умолчанию
- Функция фильтрации для произвольного вложенного списка
- Проблема с списком Python
- Как создать список исправлений в python?
- mylist = list () vs mylist = в Python
- Как написать список в файл в python