zoukankan      html  css  js  c++  java
  • Python迭代和列表生成器

    Python迭代和列表生成器
    时间:2017-09-27 19:14:01 阅读:274 评论:0 收藏:0 [点我收藏+]

    标签:其他 模块 rabl 第一个 类型 fit 首字母 表达 log

    使用for循环遍历list和tuple,这种遍历成为迭代

    在如C语言中都是通过下标拿到值,for...in这种方式其实是相同的。

    在函数的一节,这样说--->‘求和函数sum(),sum(iterable,start),第一个参数必须是可以迭代对象,listtuple。’ 可迭代对象为list,tuple

    所以使用for遍历时,对象是要可以迭代的。

    如何判断一个对象能不能迭代?

    Python的collections模块的Iterable可以判断是否可以迭代; isinstance()函数用来判断某种数据类型是否是已知的类型

    >>>isinstance(1,int)
    Ture
    >>>isinstance(‘abc‘,str)
    Ture
    >>>isinstance(3.14,float)
    Ture
    >>>isinstance(‘3.14‘,float)
    False
    #####################################


    from collections import Iterable
    >>>isinstance([1,2,3,4,5],Iterable)
    Ture
    >>>isinstance(12345,Iterable)
    False
    >>>isinstance((1,2,3,4,5),Iterable)
    Ture
    >>>isinstance({‘name‘:‘jkl‘,‘age‘:15},Iterable)
    Ture

    所以dict能使用for遍历处key或values或key,values

    dict是一个能迭代的对象,具体的看使用环境

    如何让一个list或者tuple同时显示下标和元素?

    Python提供了enumerate()函数,把list或者tuple变成了:索引-元素对,就像键值对

    t = [1,2,3,4,5]
    for k,v in enumerate(t)
    print(k,‘-‘,v)
    0-1
    1-2
    2-3
    3-4
    4-5
    5-6

    列表生成式

    如要生成一个L = [2,4,6,8,10,12,14,......100]这样的list;

    可以切片取出:

    #这里使用list()把range()函数生成的序列数转成list,tuple也以同样的方法
    >>>L = list(range(1,101))
    >>>L1 = L[1::2]
    >>>L1
    [2,4,6,8,10,........]

    还可以使用函数:

    def create():
    L = []
    for x in range(1,51):
    L.append(x*2)
    print(L)
    return

    create()
    [2,4,6,8,10,12,......100]

    以上代码都挺麻烦,使用列表生成式一行就可以解决掉

    [x * 2 for x in range(1,101)]
    [2,4,6,8,10,.....100]

    生成式还可以两个for循环嵌套,生成了一个全排列

    [m * n for m in range(1,3) for n in range(1,5)]

    [1,2,3,4,2,4,6,8]

    迭代表达式

    t = (1,2,3,4,5,6)
    [k for k in t]
    [1,2,3,4,5,6]

    加上其他的限定条件:一个list包含多个数据类型,取出字符串并将首字母大写

    L = [‘grant‘,‘fitz‘,15,3.14,None]
    [x.title() for x in L if instance(x,str)]
    [‘Grant‘,‘Fitz‘]

  • 相关阅读:
    Ansible主机信息模块 setup
    Ansible命令模块(unarchive模块 archive模块 )
    Ansible命令模块(mount模块 selinux模块 firewalld模块 )
    Ansible命令模块(group模块 user模块 cron模块 )
    Ansible命令模块(get_url 模块 service模块 systemd模块 )
    Ansible命令模块(yum模块 copy模块 file模块 )
    Ansible命令模块(command模块 shell模块 script模块 )
    Ansible 的 ad-hoc
    Ansible配置主机清单
    每日总结3.30
  • 原文地址:https://www.cnblogs.com/duanlinxiao/p/9820822.html
Copyright © 2011-2022 走看看