一、python中的一些方法
1、enumerate()方法
mylist = ["a","b","c"]
for i in range(len(mylist)):
print(value[i])
#可以用enumerate方法改写
enumerate():
mylist = ["a","b","c"]
for i,value in enumerate(mylist):
print(i,value)
output:
0 a
1 b
2 c
2、fromkeys()方法:
以前创建字典总是希望有一个默认字典
fromkeys(): 接受tuple和value, 之后会变成一个默认字典
mydict = {}.fromkeys(("1","2","3"),0)
print(mydict)
3、dict()构造方法
dict(zip((‘x’, ‘y’), (1, 2)))
dict(zip(('x', 'y'), (1, 2)))
dict([[1,2],[3,4]])
4、items()方法
mydict = dict([(1,2),(3,4)])
print(mydict.items())
二、python中的函数(进阶)
1、可变长参数
def func(a , *wargs, **kwargs):
print(wargs)
print(kwargs)
#wargs是元组参数,kwargs是字典参数,这两个东西的数据类型
#是元组和字典
func(1,2,3,4,5,aa=1,b=2,c=3)
def func(a , *wargs, **kwargs):
print(wargs)
print(kwargs)
#wargs是元组参数,kwargs是字典参数,这两个东西的数据类型
#是元组和字典,下面的写法表示元组和字典解包
func(1,*(3,4,5),**{'aa' : 2, 'bb':3})
2、lambda表达式
lambda表达式是一个匿名函数,就是暂时使用的小函数,本身是一个函数对象(函数指针),所以lambda表达式可以传给函数指针变量参与运算。例如:
lambda x : x[0] == def func(x): return x[0]
lambda x,y=3: x+y == def func(x, y=3): return x+y;
这些个匿名函数一般很短小,生成后作为一个函数对象来发挥作用,利用这个,我们可以批量地生成函数
例如以下场景:
import tkinter
top = tkinter.Tk()
func_list = [lambda n=i : print(n) for i in range(0, 10)]
B = [tkinter.Button(top, text=str(i), command = func_list[i]) for i in range(0, 10)]
for B_elem in B:
B_elem.pack()
top.mainloop()
import tkinter
top = tkinter.Tk()
func_list = [lambda : print(i) for i in range(0, 10)]
#**i 相对于lambda表达式来说,是一个全局变量,一改就都改了,所以必须设置成上面那样,把i作为一个默认参数传入方可**
B = [tkinter.Button(top, text=str(i), command = func_list[i]) for i in range(0, 10)]
for B_elem in B:
B_elem.pack()
top.mainloop()
#写计算器的解决方法
lambda表达式注意的地方:
主要是作用域问题:看如下例子
z = 5
x = 10
func = lambda x = x : print(x+z)
# 把现在外部的x置为一个默认的参数
func()
x = 11
func()
15
15
z = 5
x = 10
func = lambda : print(x+z)
# 把现在外部的x置为一个默认的参数
func()
x = 11
func()
15
16