目录
eval()函数
定义
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
用法
eval(expression[, globals[, locals]])
- expression -- 表达式。
- globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
- locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
例子
print(eval('3+4j')) # 对字符串求值得到复数
print(eval('8**2')) # 计算表达式8**2的值
print(eval('[1,2,3,4,5]')) # 对字符串形式求值得到列表
print(eval('{1,2,3,4}')) # 对字符串求值得到集合
输出结果
(3+4j)
64
[1, 2, 3, 4, 5]
{1, 2, 3, 4}
最大值最小值函数
max/min(列表,,key = 条件)
获得最大/最小值的位置,用__getitem__
实例
data=[3,2,11] print(data) # 对列表中的元素直接比大小,输出最大元素 print(max(data)) print(min(data)) # 返回转成字符串之后的最大元素 print(max(data,key=str)) data=['3','22','111'] print(max(data)) # 返回长度最大的字符串 print(max(data,key=len)) data= ['abc','Abcd','ab'] print(max(data)) # 返回最大的字符串 print(max(data,key=len)) print(max(data,key=str.lower)) # 返回全部转化为小写之后的最大的字符串 data = [1,1,1,2,2,3,1] print(max(set(data),key = data.count)) # 返回最大元素的位置,列表方法 getitem ()方法获取指定位置的值 print(max(range(len(data)),key = data.__getitem__))
输出结果
[3, 2, 11]
11
2
3
3
111
abc
Abcd
Abcd
1
5
sum()与len() 的使用
sum(iterable[, start]),iterable:可以是列表、元组、集合、字典。star为设置想加参数,默认为0。
sum():用于求字典的话就是键值相加。
len():用于求字符串的长度
实例
data = [1,2,3,4] print(len(data)) print(sum(data)) data=(1,2,3) print(len(data)) print(sum(data)) data = 'Readability counts.' print(len(data)) data = {97:'a',65:'A',48:'0'} print(len(data)) print(sum(data))
输出结果
4
10
3
6
19
3
210
排序与逆序
定义
sorted():对所有可迭代的对象进行排序操作。
sorted()函数默认为升序函数,在后面将reverse改为True就变为乱序
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
语法
sorted(iterable, cmp=None, key=None, reverse=False)
- terable -- 可迭代对象。
- cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
- key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
实例
from random import shuffle data = list(range(20)) shuffle(data) # 随机打乱顺序 print(data) print(sorted(data)) # 升序排序 print(sorted(data,key = str)) # 按转换成字符串后的大小降序排序 print(sorted(data,key = str,reverse=True)) from random import shuffle data = list(range(20)) # 建列表 shuffle(data) #打乱顺序 print(data) reversedData=reversed(data) # 生成reversed对象 print(reversedData) print(list(reversedData)) # 根据reversed对象生成列表 print(tuple(reversedData))
输出结果
[19, 8, 16, 11, 17, 10, 7, 18, 14, 0, 6, 3, 5, 9, 12, 1, 13, 4, 2, 15]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[0, 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 1, 0]
[5, 4, 7, 1, 19, 0, 10, 2, 16, 9, 8, 15, 3, 11, 13, 18, 17, 12, 14, 6]
<list_reverseiterator object at 0x000001D74E626FD0>
[6, 14, 12, 17, 18, 13, 11, 3, 15, 8, 9, 16, 2, 10, 0, 19, 1, 7, 4, 5]
()
注意:最后一个元组是空的,reversed对象中的元素只能用一
基本内置函数
input()
定义
input():输入的所有,都认为成字符串,以字符串形式保存。想要其他类型可以进行强制类型转换。
实例
num = int(input('请输入一个大于2的自然数:')) if num%2==1: print('这是个奇数') else: print('这是个偶数') lst = eval(input('请输入一个包含若干个大于2的自然数的列表')) print('列表中所有元素之和为:',sum(lst))
输出结果
请输入一个大于2的自然数:2
这是个偶数
请输入一个包含若干个大于2的自然数的列表[3,4,5,6,7]
列表中所有元素之和为: 25
print()
定义
print():直接输出
实例
print(1,2,3,4,5) # 默认情况以空格为分隔符 print(1,2,3,4,5,sep=",") # 指定使用逗号做完分隔符 print(3,5,7,end='') # 输入完数据,以空格结束,不换行 print(9,11,13)
输出结果
1 2 3 4 5
1,2,3,4,5
3 5 79 11 13
range()函数
定义
range()函数可创建一个整数列表,一般用在 for 循环中 。
语法
range(start, stop[, step])
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
实例
range1=range(4) # 只指定start为4,stop默认为0,0,step默认为1 range2=range(5,8) range3=range(3,20,4) range4=range(20,0,-3) # step也可以为负数 print(range1,range2,range3,range4) print(range4[2]) print(list(range1),list(range2),list(range3),list(range4)) for i in range(10): print(i,end='')
输出结果
range(0, 4) range(5, 8) range(3, 20, 4) range(20, 0, -3)
14
[0, 1, 2, 3] [5, 6, 7] [3, 7, 11, 15, 19] [20, 17, 14, 11, 8, 5, 2]
0123456789
zip()函数
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
实例
data = zip('1234',[1,2,3,4,5,6]) # 在转换为列表时,使用了zip对象中的全部元素,zip对象中不再包含任何内容 print(data) print(list(data)) data = zip('1234',[1,2,3,4,5,6]) print(tuple(data)) data = zip('1234',[1,2,3,4,5,6]) for item in data: print(item)
输出结果
<zip object at 0x000001ECFD189100>
[('1', 1), ('2', 2), ('3', 3), ('4', 4)]
(('1', 1), ('2', 2), ('3', 3), ('4', 4))
('1', 1)
('2', 2)
('3', 3)
('4', 4)
注意,第一个直接print打印出来的是地址,如果想要输出要加list
map()函数
map() 会根据提供的函数对指定序列做映射。能接收两个参数,映射在两个序列中。
实例
from operator import add print(map(str,range(5))) print(list(map(str,range(5)))) print(list(map(len,['abc','1234','test']))) # 使用operator标准库中的add运算 add运算相对于运算符+ # 如果map()函数的第一个参数func能够接收两个参数,则可以映射到两个序列上 for num in map(add,range(5),range(5,10)): print(num)s
输出结果
<map object at 0x00000207BC9D6FA0>
['0', '1', '2', '3', '4']
[3, 4, 4]
5
7
9
11
13
reduce()函数
reduce() 函数会对参数序列中元素进行累积。
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
实例
from functools import reduce from operator import add,mul,or_ seq = range(1,10) print(reduce(add,seq))# 累加seq中的数字 print(reduce(mul,seq))# 累乘seq中的数字 seq = [{1},{2},{3},{4}] print(reduce(or_,seq))# 并集运算
运行结果
45
362880
{1, 2, 3, 4}
filter()函数
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
实例
seq = ['abcd','1234','.,?!',''] print(list(filter(str.isdigit,seq))) print(list(filter(str.isalpha,seq))) print(list(filter(str.isalnum,seq))) print(list(filter(None,seq)))
输出结果
['1234']
['abcd']
['abcd', '1234']
['abcd', '1234', '.,?!']
翻转函数
将字符串翻转,逆序输出
代码
from operator import add
from functools import reduce
text = input('请输入一个字符串:')
print(reduce(add,reversed(text)))
输出结果
请输入一个字符串:1s54d6w8
8w6d45s1
输出列表最大值
输入一个包含若干整数的列表,输出列表中的最大值。
代码
lst = eval(input('请输入一个包含若干个整数的列表'))
print(max(lst))
输出结果
请输入一个包含若干个整数的列表[1,2,5,4,888]
888
注:使用内置函数eval()把包含列表的字符串转换成列表