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‘]

  • 相关阅读:
    【郑轻邀请赛 G】密室逃脱
    【郑轻邀请赛 C】DOBRI
    【郑轻邀请赛 F】 Tmk吃汤饭
    【郑轻邀请赛 I】这里是天堂!
    【郑轻邀请赛 B】base64解密
    【郑轻邀请赛 A】tmk射气球
    【郑轻邀请赛 H】 维克兹的进制转换
    解决adb command not found以及sdk环境配置
    adb shell 命令详解,android, adb logcat
    Unexpected exception 'Cannot run program ... error=2, No such file or directory' ... adb'
  • 原文地址:https://www.cnblogs.com/duanlinxiao/p/9820822.html
Copyright © 2011-2022 走看看