zoukankan      html  css  js  c++  java
  • python——高级特性(2)

    迭代

    在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。

    未完待续。。。

  • 相关阅读:
    hdu4841 圆桌问题[STL vector]
    hdu1002 A + B Problem II[大数加法]
    hdu1501 Zipper[简单DP]
    C语言学习之结构体
    C++学习之从C到C++
    一键自动格式化你的代码
    C标准库string.h中几个常用函数的使用详解
    Jlink使用技巧系列教程索引
    Jlink使用技巧之合并烧写文件
    Jlink使用技巧之烧写SPI Flash存储芯片
  • 原文地址:https://www.cnblogs.com/1906859953Lucas/p/8991979.html
Copyright © 2011-2022 走看看