python(续)

python链接

高级特征


  1. 切片
  2. 迭代
  3. 列表生成式
  4. 生成器

-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

posted @ 2019-08-23 22:18  lcyok  阅读(133)  评论(0)    收藏  举报