本博文源于python常见问题基础,很多时候,我写代码时看见问题,突然就会条件反射用到某个方法。而别人却无法常常瞬间想到。今天遇到了一个问题,要拆开写列表生成式,可是我第一瞬间想到列表生成式啊。所以特此写博文说明一下,也同时对这方面困惑的人进行答疑一下。
1、问题重现2、问题实验代码效果 3、问题主要思想输入:nums = [-4,-1,0,3,10]
输出: [0,1,9,16,100]
解释:平方后,数组变后[16,1,0,9,100],排序后,数组变为[0,1,9,16,100]
想直接作用在nums上,最简单的就是用列表生成式。但是先看问题的解释,发现它先取绝对值,然后再排序。所以我们要先用绝对值函数abs再用,sort函数或者sorted()。那可能看官会问sort和sorted()的区别。
因此sort和sorted就是是否直接作用在本身上。问题直接迎刃而解。
nums = [-4,-1,0,3,10] nums = sorted([pow(abs(num),2) for num in nums]) print(nums)3.2 列表生成式的拆开版本
nums = [-4,-1,0,3,10]
for i in range(len(nums)):
nums[i] = pow(abs(nums[i]),2)
nums.sort()
print(nums)
4、 怎么拆开的呢?
确定输入、处理、输出这三种关系。
我们输入的是什么,nums整个列表里的数据。
我们处理用到哪些函数?一个abs()和sort()函数.
我们最后输出,作用在nums里。所以,重点关注这几句话
for i in range(len(nums)):
nums[i] = pow(abs(nums[i]),2)
nums.sort()
- range()函数是将len变成可迭代
- nums[i]是指原地接受处理,先abs后pow,abs是去绝对值,pow是平方
- nums.sort()是直接作用在原始序列



