len() 获取数据类型的长度,有return
s = 'string'
list = [1,2,3,4,5,6]
len_s=len(s)
print(len_s) 6
len_list=len(list)
print(len_list) 6
sum() 求和,有return
def add(*args,**kwargs):
print(sum(args)+sum(kwargs.values())) # **kwargs是字典键值对传参,所以需要获取values
add(1,2,3,a=4,b=5) 15
list = [1,2,3,4,5]
tuple = (6,7,8,9,10)
dict = {'a':1,'b':2,'c':3}
res = sum(list)+sum(tuple)+sum(dict.values()) # 字典是键值对形式,所以需要获取values
print(res) 61
max() 最大值,有return
min() 最小值,有return
list = [1,2,3,4,5]
tuple = (6,7,8,9,10)
dict = {'a':1,'b':2,'c':3}
min_list=min(list)
print(min_list) 1
max_tuple=max(tuple)
print(max_tuple) 10
max_dict=max(dict.values())
print(max_dict) 3
bool布尔值 python中所有数据都有布尔值
非零为True;数值为0或者数据为空None或者数据长度为0的是False
a = '0'
print(bool(a)) True
id() 获取数据(对象)在内存当中的位置
a = 'gibert'
b = 'gibert'
print(id(a)) 1865038512560
print(id(b)) 1865038512560
c = [3,4,5]
d = [3,4,5]
print(id(c)) 1865038526272
print(id(d)) 1865038508800
a = (11) # 只有一个元素后面没有逗号,这是int类型
b = 11
print(id(a)) 2498113661552
print(id(b)) 2498113661552
总结:不可变数据类型的两个变量如果相等则id()相同
可变数据类型的两个变量即使相同id()也不同
无论是不可变数据类型还是可变数据类型每次运行后id()都会发生变化
int() float() str() list() tuple() dict() set() range()
a = list(range(1,5)) # 不使用list转成列表的话a=range(1,5)打印的是range(1,5)
print(a) [1, 2, 3, 4]
a = range(1,5)
print(type(a)) <class 'range'>
高级内置函数
enumerate() 可同时获得序列类型数据的索引和对应的值(类似元组拆包)
li = ['aa','bb','cc']
res = enumerate(li)
print(res) <enumerate object at 0x000001D224814140>
print(list(res)) [(0, 'aa'), (1, 'bb'), (2, 'cc')]
for i,v in enumerate(li):
print(i,v)
0 aa
1 bb
2 cc
li = ['aa','bb','cc']
for i in enumerate(li):
print(i) # 以元组的形式保存
(0, 'aa')
(1, 'bb')
(2, 'cc')
eval() 识别字符串中有效的python表达式(如果去掉定义的字符串变量两边的引号不报错就可以用eval()函数,差不多就是把字符串两边的引号去掉之后,是什么数据类型就转换成什么数据类型)
a = '[11,22,33,44]'
b= list(a)
print(b) ['[', '1', '1', ',', '2', '2', ',', '3', '3', ',', '4', '4', ']']
c=eval(a)
print(c,type(c)) [11, 22, 33, 44] <class 'list'>
s = "{1:'yes',2:'ok'}"
e = eval(s)
print(e,type(e)) {1: 'yes', 2: 'ok'} <class 'dict'>
c = '77>99'
print(eval(c)) False
d = "print('hello python')"
eval(d)
print(eval(d))
hello python
hello python
None # print没有返回值,所以会打印一个None
f = 'name'
print(eval(f)) 报错NameError: name 'name' is not defined,因为name没有被定义
name = 'jier'
f = 'name'
print(eval(f)) jier # name有定义,转换成变量输出定义的赋值
e = '[1,2,3](4,5,6){1:"yes"}'
print(eval(e)) 报错SyntaxError: invalid syntax # 变量e中去掉两边的引号会报错,所以用eval()函数会报错
e = '[1,2,3],(4,5,6),{1:"yes"}'
print(eval(e)) ([1, 2, 3], (4, 5, 6), {1: 'yes'}) # 多种数据类型混合,默认转换成元组形式保存
def a(): s = "{1:'1'}" return s def b(): b = '{1:"1"}' return b print(a() == b()) False print(eval(a())) {1: '1'} print(eval(b())) {1: '1'} print(eval(a()) == eval(b())) True # 最外面的引号''和""在python是相等的
filter() 过滤器函数,可以根据函数自定义的过滤规则过滤数据,形式如下
filter(参数1,参数2)
参数1:自定义过滤器规则的函数
参数2:要过滤的原数据
如果自定义的函数只有一行代码可以配合匿名函数lambda函数(lambda函数不带括号)使用,形式如下:
lambda 参数:返回值 (lambda和参数直接有个空格)
dic = {'aa':11,'bb':22,'cc':33,'dd':44}
def fun(x):
return x[1]>30 # 只有一行代码的函数,可以使用lambda函数
res = filter(fun,dic.items())
print(dict(res)) {'cc': 33, 'dd': 44}
li = [11,22,33,44,55,66,77,88,99]
def fun(x):
return 30<x<90 # 只有一行代码的函数,可以使用lambda函数,方法如下个代码块
res = filter(fun,li)
print(res) <filter object at 0x0000013EEE9CCFA0>
print(list(res)) [33, 44, 55, 66, 77, 88]
li = [11,22,33,44,55,66,77,88,99]
res = filter(lambda x:30<x<90,li)
print(res) <filter object at 0x000001F098B2CFA0>
print(list(res)) [33, 44, 55, 66, 77, 88]
zip() 聚合打包,支持列表和列表,元组和列表等打包成以元组或字典为元素的格式存放在列表中(一般存放在列表中,因为列表支持增删改查,元组不支持增删改)
a = ['name','age','sex','add']
b = ['daxigua',18,'boy'] # a,b两个变量内元素数量不一致,以最短的为准聚合打包成元组的形式
res = zip(a,b)
print(res) <zip object at 0x000001B7F80BF100>
print(list(res)) [('name', 'daxigua'), ('age', 18), ('sex', 'boy')]
a = ['name','age','sex','add']
c = [['daxigua',18,'boy'],['erhan',18,'boy'],['erlin',18,'boy'],['erfang',18,'boy']]
lis = []
for i in c:
res = dict(zip(a,i))
print(res) # 输出下面四个字典格式的数据
lis.append(res) # 把字典作为一个元素加入到列表中
print(lis)
{'name': 'daxigua', 'age': 18, 'sex': 'boy'}
{'name': 'erhan', 'age': 18, 'sex': 'boy'}
{'name': 'erlin', 'age': 18, 'sex': 'boy'}
{'name': 'erfang', 'age': 18, 'sex': 'boy'}
[{'name': 'daxigua', 'age': 18, 'sex': 'boy'}, {'name': 'erhan', 'age': 18, 'sex': 'boy'}, {'name': 'erlin', 'age': 18, 'sex': 'boy'}, {'name': 'erfang', 'age': 18, 'sex': 'boy'}]