在下面的列表理解中,列表乘以一个是什么?

时间:2017-07-26 23:31:54

标签: python list-comprehension

您好我在{{3}}阅读了一些主题,而且我很难理解列表理解的最后部分:

[root@test tmp]# yum install libmysqlclient.so.18 Loaded plugins: langpacks, package_upload, product-id, search-disabled- repos, subscription-manager rhel-7-server-rpms | 2.1 kB 00:00:00 rhel-7-server-satellite-tools-6.1-rpms | 2.1 kB 00:00:00 Resolving Dependencies --> Running transaction check ---> Package mariadb-libs.i686 1:5.5.47-1.el7_2 will be installed Removing mariadb-libs.i686 1:5.5.47-1.el7_2 - u due to obsoletes from installed MySQL-shared-compat-5.6.37-1.el7.x86_64 --> Restarting Dependency Resolution with new changes. --> Running transaction check ---> Package mariadb-libs.i686 1:5.5.47-1.el7_2 will be installed --> Finished Dependency Resolution [root@test tmp]#

为什么我们将列表乘以1?如果我删除了lambda l:[i+l.pop()for i in l*1],我会在列表中减少一个项目。

1 个答案:

答案 0 :(得分:3)

乘以1可为您提供列表的浅表副本,该副本不会受到您之后执行的list.pop操作的影响,使理解行为一致 umambiguous ;因为你没有从你正在迭代的同一个列表中弹出。

他们可以使用更直观的l[:]或更详细的copy.copy(l)轻松创建浅色副本,但这会占用更多字符,而代码高尔夫的目标是使用尽可能少的字符。