您好我在{{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]
,我会在列表中减少一个项目。
答案 0 :(得分:3)
乘以1可为您提供列表的浅表副本,该副本不会受到您之后执行的list.pop
操作的影响,使理解行为一致和 umambiguous ;因为你没有从你正在迭代的同一个列表中弹出。
他们可以使用更直观的l[:]
或更详细的copy.copy(l)
轻松创建浅色副本,但这会占用更多字符,而代码高尔夫的目标是使用尽可能少的字符。