Python 基础(二)
迭代
一个for语句就能实现简单的迭代,但是对于一些复杂的迭代,一此函数非常有用。
1.并行迭代
程序可以同时迭代两个序列,比如有下面两个列表:
names = ['king','ken','jack'] ages = [18,20,22]
如果想打印名字和对应的年龄,可以像下面这样做:
for x in names:
for y in ages:
if names.index(x) == ages.index(y):
print('%s is %s years old'%(x,y))
>>>king is 18 years old
ken is 20 years old
jack is 22 years old
也可以这样:
for i in range(len(names)):
print('%s is %s years old' %(names[i],ages[i]))
而内建的zip函数也可以用来并行迭代,它会将两个序列压缩在一起,返回一个元组的列表,然后我们可以循环中解包元组,而且zip可以用于不等长的序列,当最短序列用完时,循环就停止。
for name,age in zip(names,ages):
print('%s is %s years old' %(name,age))
2.编号迭代
有时候相要迭代序列中的对象,同时又要获得当前对象的索引,可以用内建函数 enumerate.
li = ['a','b','c','d']
for x,y in enumerate(li):
print(x,y)
>>>0 a
1 b
2 c
3 d
Python内建函数
1. abs(x)
abs()函数返回数字(可为普通型、长整型或浮点型)的绝对值。例如:
>>> abs(-10) 10
2. chr(i)
chr()函数返回与ASCII码i相匹配的一个单一字符串,如下例所示:
>>> print (chr(72)+chr(101)+chr(108)*2+chr(111)) Hello
3. input([prompt])
input()函数提供用户输入。
>>> name = input('input your name:')
input your name:yang
4. list(sequence)
list()函数返回以列表。该列表的项及顺序与sequence参数的项及顺序相同,如下例所示:
>>> str = 'abcdefg' >>> list(str) ['a', 'b', 'c', 'd', 'e', 'f', 'g']
5. min(s)
当仅给定一个参数时,min()函数返回序列s的最小值。如:
>>> li = [1,2,3,4,5,6,7] >>> min(li) 1
6.ord(c)
该函数返回由一个字符c组成的字符串的ASCII码值或Unicode数字码。ord()函数是chr()函数的反函数
>>> ord('a')
97 #97是a在ASCII表中的数字码
7.chr(s)
该函数返回由一个ASCII码值对应的数字或字符。
>>> chr(98) 'b'
利用此特性,我们可以生成随机验证码:
import random
li = []
for i in range(6):
x = random.randrange(0,5)
if x == 2:
y = random.randrange(0,9)
y =str(y)
li.append(y)
else:
z = random.randrange(65,91)
z = chr(z)
li.append(z)
xyz = ''.join(li)
print(xyz)
>>>QZ23BZ
8. range(x,y)
如果你需要一个数值序列,使用内建函数range() 会很方便
print(list(range(0,10))) >>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
当然,可以让range() 的起始值定为某一个数,也可以指定一个不同的步长:
print(list(range(0,10,2))) >>>[0, 2, 4, 6, 8] print(list(range(4,10,2))) >>>[4, 6, 8]
装饰器
装饰器其实也就是一个函数,一个用来包装函数的函数,装饰器在函数声明完成的时候被调用,调用之后声明的函数被换成一个被装饰器装饰过后的函数。
装饰器的语法以@开头,接着是装饰器函数的名字、可选参数。紧跟装饰器声明的是被装饰的函数和被装饰的函数的可选参数。
def outer(f):
def inter():
print('this is before')
f()
print('this is after')
return inter
@outer
def f1():
print('F1')
#等价于
def outer(f):
def inter():
print('this is before')
f()
print('this is after')
return inter
def f1():
print('F1')
f1 = outer(f1)
被装饰对象有参数:
def outer(f):
def inter(x,y):
print('this is before')
f(x,y)
print('this is after')
return inter
@outer
def f1(x,y):
print(x)
print(y)
f1('a','b')

浙公网安备 33010602011771号