python(续)
高级特征
- 切片
- 迭代
- 列表生成式
- 生成器
-pow(x,y)表示x的y次幂{与x**y作用相同}
一.切片
1.list与tuple和数组相似,都能进行切片。字符串也可以切,返回值还为字符串。
a[0:3] #正常切片
a[-2:0] #也可以用负数切
a[1:9:2] #以步长为2切
a[ : : -1] #返回一个倒序的列表
2.直接修改切片数值的话原数组也会改变,实战中需要注意。
3.字符串的复制:a = b,此时a和b是指向同一个地址的,一变都变。
a = b [ : ],此时a和b互不相同,分别指向两个地址。
2.迭代
1.迭代的意思就是用一个for循环,遍历整个数组,矩阵,字典,列表。
2. 字典(key-value)迭代:默认情况下是迭代key值。
要想迭代value:
for value in d.values ( )
或两个都迭代:
for k,v in d,items ( )
3.迭代的同时输出元素的位置(i值为位置值)
for i,value in enumerate(‘列表’)
4.for循环例也可以同时迭代两个元素。
for x, y in [(1, 1), (2, 4), (3, 9)]:
print(x, y)
#输出结果
1 1
2 4
3 9
3.列表生成式(就是生成一个列表)
1.list(rang(1,11))【区间左闭右开】
2.[x* x for x in range (1,11)] 【生成一到十的平方(x* x也可以换)】{用for循环也可以,不过比较麻烦}
3.[x* x for x in range (1,11) if x % 2==0] 【生成一到十内偶数的平方(x* x可以换成其他函数)】
4.可以使用两个for循环生成全排列:
[m+n for m in ‘abc’ for n in ‘xyz’]
生成[‘ax’,‘ay’,‘az’,‘bx’,‘by’,‘bz’,‘cx’,‘cy’,‘cz’]
5.还可以玩的更花:
d={‘x’:’a’,’y’:’b’,’z’:’c’}
[k +‘=’+v for k,v in d.items()]
输出:[‘y=b’,’x=a’,’z=c’]
#大写变小写(反着也可以来)
L = ['Hello', 'World', 'IBM', 'Apple']
[s.lower() for s in L]
输出:['hello', 'world', 'ibm', 'apple']
4.生成器(generator)
1.应为用列表生成式生成大型列表是很鸡肋(占内存),所以说有了生成器。
2.其实将上边列表生成式的[]换成()即可。
3.调用的时候用for循环
g = (x * x for x in range(10))
for n in g:
... print(n)
...
0
1
4
9
16
25
36
49
64
81

浙公网安备 33010602011771号