from functools importreducedefchar_to_number(string):
all_number_dict={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}#以参数string为键,取出all_number_dict里面的值return all_number_dict[string]defresult_number(x,y):
res = x*10+y
return res
res=list(map(char_to_number,'123'))
result=reduce(result_number,res)print('最终的结果是:',result,'最终的类型',type(result))
结果:最终的结果是: 123 最终的类型 <class'int'>
4.编写程序实现float功能
from functools importreducefrom decimal import Decimal
defget_num(n):
dicts ={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}return dicts[n]defget_result(x,y):return x*10+y
deffloat1(strs):
data =list(map(get_num,strs))
result =reduce(get_result,data)return result
strs ='1234.890'
data = strs.replace('.','')
dian_index = strs.find('.')
cha =10**(len(data)-dian_index)print(Decimal(float1(data))/cha)
结果:1234.89
dicts ={'hello':'world',(1,2,3):98,'李白':[{12:33}]}# 方法一for a,b in dicts.items():print(a,b)
结果:
hello world
(1,2,3)98
李白 [{12:33}]# #方法二for a in dicts:#直接遍历,遍历出来的是字典的键print(a,dicts[a])print(dicts['hello'])
结果:
hello world
(1,2,3)98
李白 [{12:33}]
world
7.== 集合 ==:set
遍历
sets ={2,2,2,4,4,3,7}for i in sets:print(i)
sets ={2,2,2,4,4,3,7}print(sets[0])#集合无序
可迭代对象:所有能被for循环遍历的。如:range(100),{1,2,3,4}
迭代器:能被next函数不断调用,并不断返回下一个值。
生成器:是一种特殊的迭代器,只有方法一和方法二生成的才是生成器
方法一
a =(x for x inrange(10))
方法二
defhello():for i inrange(5):yield i
a = hello()print(next(a))#结果:0
10.random的方法
1.random.shuffle(lists)import random
lists =[1,2,3,4,5,6,7,8,9]
random.shuffle(lists)#打乱列表print(lists)
结果:[3,7,5,1,6,2,9,4,8]2.random.random()import random
print(random.random())#生成0~1之间的随机小数字
结果:0.0196007276145421243.random.randrange(1,10)import random
print(random.randrange(1,10))#1~9里面随机取值,取得是整数
结果:24.random.sample(lists,4)import random
lists =[1,2,3,4,5,6,7,8,9]print(random.sample(lists,4))#从lists里面随机取4个值,每次返回结果不一样
结果:[5,6,7,9]5.random.choice(lists)import random
lists =[1,2,3,4,5,6,7,8,9]print(random.choice(lists))# #从lists里面随机取1个值,每次返回结果不一样
结果:46.random.randint(1,10)import random
import time
print(random.randint(1,10))#1~9里面随机取1个值,取得是整数
结果:10
1.第一种random.shuffle(m)import random
lists =['student{}'.format(x)for x inrange(1,100)]#用列表生成式99个名字print(lists)defget_random_name(m,num):#num随机取几个名字
random.shuffle(m)iflen(m)>=num:#把里面顺序打乱就可以取值了,先判断里面的数量return m[:num]#返回整成的值,从开头取到随机numelse:return'名字数量不足!'print(get_random_name(lists,10))#随便叫什么都行,实际上是把lists传给m2.第二种random.choice(m)import random
lists =['student{}'.format(x)for x inrange(1,100)]#用列表生成式99个名字print(lists)defget_random_name(m,num):iflen(m)>= num:
lists =[]for i inrange(num):
data = random.choice(m)
lists.append(data)
m.remove(data)#数字大了很慢return lists
else:return'名字数量不足'print(get_random_name(lists,20),len(get_random_name(lists,20)))3.第三种random.randrange(m)import random
lists =['student{}'.format(x)for x inrange(1,100)]#用列表生成式99个名字print(lists)defget_random_name(m,num):iflen(m)>= num:
lists =set([])whileTrue:iflen(lists)== num:break
data = random.randrange(len(m))
lists.add(m.pop(data))return lists
else:return'名字数量不足'print(get_random_name(lists,10))#随便叫什么都行,实际上是把lists传给m
defhello(m):
lists =[1]for i inrange(m):yield lists
n =[]for i inrange(len(lists)-1):
n.append(lists[i]+lists[i+1])
lists =[1]+n+[1]for i in hello(10):print(i)