迭代器,生成器,format,sort,sorted,nlargest,nsmallest

list1=[1,2,3,4,5,]

list1_iter=list11.__iter__()   所有的迭代器对象都是可迭代对象反之不成立 还要next方法 字符串等等都就没有next方法但是可以经iter转为迭代器对象

print(list1_iter.__next__())

print(list1_iter.__next__())

print(list1_iter.__next__())

for 循环原理

将 in 后面刻碟带对象转换成迭代器对象,将里面每个值用next取出赋值给in前面变量,直到异常

但凡函数内出现yield关键字,再去调用函数不会立即执行函数体代码,会得到一个返回值,该返回值就是生成器对象,即自定义的迭代器
'''

# #
def func():
print('first')
yield 1
print('second')
yield 2
print('third')
yield 3
yield后函数不执行 next一次执行一次 next(func())
并且yield可以返回值 与return不同的是yield可以让函数暂停在某处,并可以多次获得yield值
是一种自定义迭代器
print(format(0xa,'x')) 
format(‘13415’,‘o’)转八进制  d10  x16 c unicode码   b二进制    n也是10 空默认10   x字母大写 转换大写
format(‘13441.4635’,‘f’)小数点计数 默认6 ‘e’ 科学计数默认6 0.8f 8位
'my name is {} ,age {}'.format('hoho',18)
'my name is hoho ,age 18'
参数说明:
sort没有返回值永久改变与按顺序,sorted有返回值,调用方法不一样,xx.sorted()
(1)  cmp参数
cmp接受一个函数,拿整形举例,形式为:
def f(a,b):
     return a-b
如果排序的元素是其他类型的,如果a逻辑小于b,函数返回负数;a逻辑等于b,函数返回0;a逻辑大于b,函数返回正数就行了
 
(2)  key参数
 key也是接受一个函数,不同的是,这个函数只接受一个元素,形式如下
def f(a):
     return len(a)
key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序
 
(3) reverse参数
接受False 或者True 表示是否逆序
sort
import heapq
# nums=[1,3,5,65,-9,23,45,0]
# print(heapq.nlargest(4,nums))
# print(heapq.nsmallest(4,nums))
#
# dic=[
# {'name':'Tom','salary':2000},
# {'name':'Tony','salary':2333},
# {'name':'Hoowk','salary':4000},
# {'name':'Mr3','salary':1000}
# ]
# print(heapq.nlargest(3,dic,lambda x:x['salary']))
dic=[
{'name':'Tom','salary':2000},
{'name':'Tony','salary':2333},
{'name':'Hoowk','salary':4000},
{'name':'Mr3','salary':1000}]
# for i in dic:
print(dic.sort(key=lambda x:x['salary'],reverse=True))
print(dic)
print(sorted(dic,key=lambda x:x['salary'],reverse=True))







posted on 2019-02-28 21:24  paulgeo  阅读(281)  评论(0编辑  收藏  举报