迭代
在python中迭代是通过for ....in...完成的,只要是可迭代对象都可以迭代
#!usr/bin/python
#-*- coding:UTF-8 -*-
#tuple迭代
t=[(1,'a','z'),(2,'b','z')]for x,y,z in t:
print(x,z)
#enumerate函数可以把一个list或者tuple变成“索引-元素”对
for i,value in enumerate(t):
print(i,value)
》1 z
》2 z
》0 (1, 'a', 'z')
》1 (2, 'b', 'z')
注意:这里输出的其实是tuple(括号省略掉了)
默认情况下,dict迭代的是key。如果要迭代value,可以用
for value in d.values()
,如果要同时迭代key和value,可以用
for k, v in d.items()
#dict的迭代
d={'city':'SH','age':12,'sex':'G'}
for k in d.items():
print(k)
输出》
('city', 'SH')
('age', 12)
('sex', 'G')
判断
那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:
#Iterable类型判断 使用isinstance函数
from collections import Iterable
#str是否可以迭代
print('str是否可以迭代',isinstance('abc',Iterable))
#list是否可以迭代
print('list是否可以迭代',isinstance([1,2,3],Iterable))
#整数是否可以迭代
print('整数是否可以迭代',isinstance(123,Iterable))
输出》
str是否可以迭代 True
list是否可以迭代 True
整数是否可以迭代 False
使用迭代
使用迭代返回一个list的最小值和最大值
#使用迭代找到list中的最小值和最大值并返回
def findMinAndMax(L):
if L==[]:
return (None,None)
min=max=L[0]
for n in L:
if min>n:
min=n
if max<n:
max=n
return (min,max)
print(findMinAndMax([1,3,4,55,2]))
》(1, 55)
列表生成式
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。写列表生成式要把元素放在前面,后面for...in...,后面可以加i判断,比如:
#列表生成式
li=[x*x for x in range(1,11) if x%2==0]
print(li)
》[4, 16, 36, 64, 100]
应用
运用它可以写出非常简洁的代码,例如列出当前目录下所有的文件和目录名,可以通过一行代码实现:
import os#导入os模块
print([s for s in os.listdir('.')])
》['DLLs', 'Doc', 'include', 'iter.py', 'Lib',
'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe',
'python3.dll', 'python36.dll', 'pythonw.exe',
'README.txt', 'Scripts', 'tcl', 'Tools', 'vcruntime140.dll']
列表生成式也可以添加if语句
通过添加if语句将list中的字符串小写
# -*- coding: utf-8 -*-
L1 = ['Hello', 'World', 18, 'Apple', None]
L2=[s.lower() for s in L1 if isinstance(s,str)]
print(L1)
print(L2)
》['Hello', 'World', 18, 'Apple', None]
》['hello', 'world', 'apple']
生成器
在Python中,这种一边循环一边计算的机制,称为生成器:generator。
未完待续。。。