目录
迭代器
可迭代对象: 只要拥有iter方法的对象就是可迭代对象,下面的除了前两个,从字符串开始都是可迭代对象
height = 180 #整型
salary = 3.2 #浮点型
name = 'nick' #字符串
hobby_list1 = ['run','read'] #列表
hobby_tup = ('run','read') #元组
info_dict1 = {'name':'nick','weight':140} #字典
hobby_set = {'read','run','run'} #集合
在后面加点,然后打一个iter再按Tab键就能出来_iter_
列表使用iter
hobby_list = ['run','read']
hobby_list_iter = hobby_list.__iter__() #把列表变成可迭代对象
print(hobby_list_iter.__next__()) ##输出run
print(hobby_list_iter.__next__()) ##输出read
##再多输出一行就会报错
字典使用iter
info_dict = {'name':'nick','weight':140}
info_dict_iter = info_dict.__iter__()
print(info_dict_iter.__next__()) ##输出name
print(info_dict_iter.__next__()) ##输出weight
###改成value就会是nick、140
迭代器对象:拥有__iter__方法——>可迭代对象拥有__next__方法的才是迭代器对象,文件本身就是迭代器对象
- 先加iter变成迭代器对象,再加next变成迭代器
下面这个就是使用迭代器后,就不用使用for进行for i in xx给他列出
# 这一段代码如果用c写,就是for循环的原理
hobby_list2 = ['run','read']
hobby_list2_iter = hobby_list2.__iter__()
while True:
try:
print(hobby_list2_iter.__next__())
except:
break
三元表达式
dog_name = 'fenggou'
# 不推荐使用,你以后写程序,程序是越容易看懂越好,而不是写成一行,让别人说你是傻逼
print('远离他') if dog_name == 'fenggou' else print('盘他')
列表推导式
[i*2 for i in range(100)]
print(lis) ###输出0~198(而且是偶数)
# 千万不要写这样的东西,否则真的会被骂傻逼
lis1 = [i * 2 if i > 50 else i for i in range(100)]
print(lis1) ###输出前五十一个是0到50,其余是两倍
字典生成器
dic= dict.fromkeys([1,2,3,4],2)###有关fromkeys的使用忘了可以再看看
print(dic2)
keys = ['L','Y','M']
default_value = []
dic1 = dict.fromkeys(keys,default_value)###default_value的东西每个key拿到的一样
print(dic1)
default_value.append(1000)
print(dic1)
dic2 = {i:i**2 for i in range(10)}
print(dic)
#####分别输出
{1: 2, 2: 2, 3: 2, 4: 2}
{'L': [], 'Y': [], 'M': []}
{'L': ['1000'], 'Y': ['1000'], 'M': ['1000']}
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
拉链函数
# 拉链函数
res = zip('abcd',[1,2,3,4])
print(res) ##输出<zip object at 0x000002575EFAA040>
dic = dict() #先定义一个空字典
for k,v in res:
dic[k] = v #res指向值放进去
print(dic)
####一个式子把上面的写完
print({k:v for k,v in zip('abcd',[1,2,3,4])})
标签:__,August,迭代,python,生成式,iter,dict,print,hobby
From: https://www.cnblogs.com/yyds703/p/18398969