美文网首页
Python学习之路(高级特性之可迭代对象Iterable)

Python学习之路(高级特性之可迭代对象Iterable)

作者: 55lover | 来源:发表于2017-12-22 13:48 被阅读0次

高级特性之可迭代

# 无论什么语言中 都有迭代 迭代指的是用for循环遍历一个list或者tuple ,迭代方式都差不多 比如在java中用for循环python中用的是for...in... 可以迭代对象
# for... in... for(x,y) in obj  最多只能接收2个参数

import math

for x in [1,2,3]: # list
    print(x)

for x in ('A','B','C'): # tuple
    print(x)

for x in 'abc': # string
    print(x)

L = {'dp': 24, 'cpy': 23, 'ch': 10}
for x in L: # dict
    print(x)
# 对于 dict对象 如果我们需要迭代出他们的值呢?
for v in L.values():
    print(v)
# 对于 dict对象 如果我们需要迭代出他们的key 和 value呢
for k,v in L.items():
    print('key: ',k ,'value: ', v)
# 迭代对象有时候我们需要知道 迭代的索引了 ,那么我们需要知道一个方法:enumerate(索引,值) enumerate(索引,值) enumerate(索引,值) 只针对与list tuple string 等可迭代数据类型
for (i, v) in enumerate(['A','B','C']): 
    print('index: ', i, 'value: ', v)
for (i, v) in enumerate(('a', 'b', 'c')):
    print('index: ', i, 'value: ', v)
for (i, v) in enumerate(('zxy')):
    print('index: ', i, 'value: ', v)

for i, v in  enumerate(L.items()): # L.values() 只有value  L 只有key值
    print('index: ',i ,'value: ', v) # v 是一个tuple对象 不可变
    print('index: ',i , 'key: ', v[0] ,'value: ', v[1])

# 进阶 
for i, x in enumerate([(1,2),(3,4),(5,6)]):
    print('i:', i, 'x: ',x )

# for x in 123:  # 整数不能被迭代
#     print(x)

练习

请使用迭代查找一个list中最小和最大值,并返回一个tuple: 冒泡

# def findMinAndMax(L):
#     if L == []:
#         return (None, None)
#     return (min(L), max(L))
def findMinAndMax(L):
    if len(L) > 0:
        if len(L) == 1: 
            return (L[0], L[0])
        else: 
            min = L[0]
            max = L[0]
            for v in L:
                while min > v:
                    min = v
                while max < v:
                    max = v
                
            return (min, max)
    else:
        return (None, None)
# 测试
# findMinAndMax([7, 1, 3])
if findMinAndMax([]) != (None, None):
    print('测试失败!')
elif findMinAndMax([7]) != (7, 7):
    print('测试失败!')
elif findMinAndMax([7, 1]) != (1, 7):
    print('测试失败!')
elif findMinAndMax([7, 1, 3, 4, 8, 9]) != (1, 9):
    print('测试失败!')
else:
    print('测试成功!')

小结

任何可迭代对象都可以作用于for循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用for循环。

关注一波!喜欢一波!本人是前端菜鸟,正在做自己的个人博客邓鹏的博客,欢迎来交流学习, 使用的技术 vue + koa2 + mysql + php + nginx!

相关文章

网友评论

      本文标题:Python学习之路(高级特性之可迭代对象Iterable)

      本文链接:https://www.haomeiwen.com/subject/grdtgxtx.html