[x]
означает список, содержащий один элемент: x
.
[[x]]
означает список, содержащий один элемент: список, содержащий один элемент: x
.
Итак, если вы скажете, x
- это 4
, тогда [x] = [4]
- это список, содержащий только 4
, а [[x]] = [[4]]
- это список, содержащий только список, содержащий только 4.
Как видите, [x]
просто помещает x
в список сам по себе. Если x = [1, 2, 3]
(то есть x
- это сам список), то вы, вероятно, не хотите вызывать функцию с [x] (= [[1, 2, 3]])
, поскольку затем вы предоставляете ей список, содержащий ваш исходный список, а не сам список. , Конечно, это может быть вполне законным и необходимым в некоторых случаях, но если вы не уверены, это, скорее всего, не нужно.
Итак, если у вас есть foo
, то есть int list
, и вы затем звоните print_foo [foo]
, вы говорите: «Распечатайте этот список, содержащий список, который я хочу напечатать». Что вы, вероятно, хотите сказать, это print_foo foo
, где вы пропускаете избыточную оболочку списка. Это можно интерпретировать как «Распечатать этот список, который я хочу напечатать».