字典的迭代
#字典的迭代
userInfo = {"name":"FreeMan","age":"36","city":"重庆"}
# k(key)是字典的键,v(value)是字典的值
for k,v in userInfo.items():
print("key =>",k,"value=>",v)
结果:
key => name value=> FreeMan
key => age value=> 36
key => city value=> 重庆
可迭代对象
通过for循环来遍历list、dict或tuple,这种遍历我们称为迭代(Iteration)。
那么,如何判断一个对象是可迭代对象呢?
#collections模块的Iterable类型判断:
from collections import Iterable
print(isinstance('abc',Iterable))
print(isinstance([1,2,3],Iterable))
print(isinstance((123),Iterable))
print(isinstance('苹果',Iterable))
结果:
True
True
False
True
改变list为索引-元素进行迭代
python内置的enumerate()函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素自身
#改变list为索引-元素进行迭代--enumerate()函数
fruit = ["苹果","香蕉","栗子","西瓜"]
for k,v in enumerate(fruit):
print(k,v)
结果:
0 苹果
1 香蕉
2 栗子
3 西瓜
简单的列表生成式
语法:[表达式 for 变量 in 列表[条件]]
如果要生成[1,2,…,100]怎么做?
方法一:
#列表生成式
List1 = [i for i in range (1,101)]
print(List1)
方法二:
#不用列表生成式,生成[1,100]
List1 = []
for i in range(1,101):
List1.append(i)
print(List1)
for循环还可以加上if判断,就可以筛选出仅偶数的平方
#生成1~100的偶数,[表达式 for 变量 in 列表 if...]
Even = [i for i in range (1,101) if i%2 == 0]
print(Even)
#常规for循环方法
List1 = []
for i in range(1,101):
if i%2 ==0:
List1.append(i)
print(List1)
使用两层循环,可以生成全排列
#列表生成式
List1 = [i +j for i in "ABC" for j in "XYZ"]
print(List1)
#常规for循环方法
for i in "ABC":
for j in "XYZ":
print(i+j)
结果:
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
使用列表生成式获取当前目录文件
#使用列表生成式获取当前目录文件
import os
List1 = [i for i in os.listdir()] #listdir()可以写你想获取指定路径的文件
print(List1)
生成器的创建(generation)
方法一:把一个列表生成式的[]改成()
#创建一个生成器
G = (i**2 for i in range(1,101))
print(G)
结果:
<generator object <genexpr> at 0x0000025BF86C5C50>
#0x0000025BF86C5C50 生成器的内存地址
使用迭代获取生成器推算的每个元素
#使用迭代获取生成器推算的每个元素
G = (i**2 for i in range(1,101))
for i in G:
print(i)
map()函数
map()函数接收两个参数,一个是函数,一个是Iterable
map()将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterable返回
#我们可以使用map函数做到同样的效果map(func,iter) 工厂函数
#对后面可迭代的对象,去除里面的每一个元素对其进行加工处理
#map只能对一个元素进行操作,所以只能传一个值x
#对List1里的每一个元素加1
List1 = [i for i in range(1,11)]
print(List1)
def add1(x):
return x+1
print(list(map(add1,List1)))
结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
匿名函数
python中提供了对匿名函数的有限支持,使用关键字lambda
语法:lambda[arg1[,arg2,…argn]]:expression
#如果不想占内存地址,那么就可以用lambda函数
List7 = [i for i in range(1,7)]
def sqr(x):
return x**2
print(list(map(sqr,List7)))
#匿名函数输出结果与上面代码等价于
print(list(map(lambda x:x**2,List7)))
结果:
[1, 4, 9, 16, 25, 36]
[1, 4, 9, 16, 25, 36]
写CSDN是为了记录自己所学习的知识
为了巩固
为了更自律
如果有问题请各位指正,谢谢大家