第四篇呢,把高级特性回顾一下,顺便把常用的对字符串、列表的用法小结一下,这篇长期更新这个用法小结。
判断类型
#判断是否可迭代
>>> from collections import Iterable
>>> isinstance('abc', Iterable)
True
#判断是否是字符串
>>> x = 'abc'
>>> y = 123
>>> isinstance(x, str)
True
>>> isinstance(y, str)
False
列表的下标循环
>>> for i, value in enumerate(['A', 'B', 'C']):
... print(i, value)
...
0 A
1 B
2 C
列表生成式
#带条件的
>>> temp=[x for x in range(0,500) if x%2==0 and x%7==0]
>>> temp
[0, 14, 28, 42, 56, 70, 84, 98, 112, 126, 140, 154, 168, 182, \
196, 210, 224, 238, 252, 266, 280, 294, 308, 322, 336, 350, \
364, 378, 392, 406, 420, 434, 448, 462, 476, 490]
>>>
#双层for
>>> [a+b for a in['hello','bye'] for b in ['john','tom','lily']]
['hellojohn', 'hellotom', 'hellolily', 'byejohn', 'byetom', 'byelily']
>>>
#字典的列表生成
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> [k + '=' + v for k, v in d.items()]
['x=A', 'y=B', 'z=C']
>>>
生成器:
在Python中,这种一边循环一边计算的机制,称为生成器:generator。
方法1:将列表生成式的[]改成()
方法2:函数中带有yield关键字
例如:
#杨辉三角
def triangles():
L = [1]
while True:
yield L
L.append(0)
L = [L[a] + L[a - 1] for a in range(len(L))]
map/reduce:
>>> def tempK(x):
... return x*x
...
>>> tempP=[1,2,3,5,8]
>>> tempL=list(map(tempK,tempP))
>>> tempL
[1, 4, 9, 25, 64]
>>> from functools import reduce
>>> def tempK(x,y):
... return x+y
...
>>> reduce(tempK,tempP)
19
>>>
filter暂时没什么说的:
def is_palindrome(n):
if str(n) == str(n)[::-1]:
return int(n)
output = filter(is_palindrome, range(1, 200))
print(list(output))
#结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191]
sorted()暂时没什么说,是一个高阶函数。
首先,记住区间是前闭后开的。
用索引。
用切片,怎么取都可以。
#新建一个列表
>>> a=list(range(0,20))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
#取前5个数
>>> b=a[0:5]
>>> b
[0, 1, 2, 3, 4]
#取后5个数
>>> b=a[-5:]
>>> b
[15, 16, 17, 18, 19]
#取中间,第i到i+n个数
>>> b=a[4:9]
>>> b
[4, 5, 6, 7, 8]
#步长,跳着取,隔n步取数
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> b=a[::2]
>>> b
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>>
#第5个到第10个隔3个取一个
>>> b=a[5:10:3]
>>> b
[5, 8]
#列表倒序,倒过来输出:
>>> b=a[::-1]
>>> b
[19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>>