zoukankan      html  css  js  c++  java
  • Python 函数 切片 迭代 列表生成器

    函数

       编写     定义一个函数要用def语句    def sum(i,n):   ⚠有冒号

       返回多值     实际上是返回一个tuple

       定义默认参数    默认参数的作用是简化调用   def power(x,n=2)   默认参数只能定义在必需参数后面     使用时,power(2)或power(3,4)

       定义可变参数     可变参数的名字前面有个*号,我们可以传入0个,1个或多个参数给可变参数

                             Python解释器将传入的一组参数组装成一个tuple传递给参数

    切片

      对list切片    

                L[0:3]   从索引0开始,直到索引3为止,但不包括索引3

                L[:3]    如果索引从0开始,可以省略

                L[1:3]    从索引1开始,直到索引3为止,不包括索引3

                L[:]      从头到尾

                L[::3]    从头到尾,每3个取一个,每隔两个取一个

                    

    #range(1,101) 可以创建一个数列   [1,2,3...,100]
    
    L = range(1,101)
    前10个数:L[0:10]
    取出3的倍数  L[2::3]
    取出不大于50的5的倍数 L[4:50:5]
    

      倒叙切片

                L[-2:]   从倒数第二个开始到最后

                L[:-2]   从头到倒数第二个(不包含)

                L[-4:-1:2]   从倒数第4个到倒数第一个,并每两个取一个

      字符串切片    字符串表可看成是一种list,每个元素是一个字符。   字符串可以用切片操作

    迭代

       什么是迭代

              Python的for循环不仅可以用在list或tuple上,还可以作用在其他任何可迭代对象上。迭代操作就是对于一个集合,无论该集合是有序还是无序,用for循环可以依次取出集合的一个元素。

              集合的分类:

                    有序:list tuple  str unicode

                    无序: set

                    有key-value且无序: dict

       索引的迭代

              在Python中,迭代永远是取出元素本身,而非元素的索引。

              可以使用enumerate()函数获得索引的迭代

                  

    for index,name in enumerate(L):
         print index,'-',name
    

         实际上enumerate()把每个元素变成tuple(index,element)

             zip(L1,L2)将list L1与L2合并, [(L1.a,L2.a),(L2.a,L2.b)...]

       迭代dict中value 

             使用  for item in D   输出的是key

             dict对象有一个 values()方法,这方法把dict转换成一个包含所有value的list

             除了values()方法还有一个itervalues()方法

             区别:   values()方法实际上把 dict转换成包含value的list。   itervalues()不会,他是在迭代过程中依次取出value   节省了生成list所需的空间

             如果一个对象说自己可迭代,那我们直接用for循环去迭代它,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求

       迭代dict中key和value

             同时迭代key和value。使用items()方法。将dict对象转换成包含tuple的list 

    列表生成器

        生成列表

               列表生成式:   把要生成的元素放到前面,后面跟for循环,就可以创建list 

                                   [x*x for x in range(1,101)]

        条件过滤

                [x*x for x in range(1,101) if x%2==0]

                 列表生成式的for循环后面还可以加上if判断   只有当if条件为True时,才把当前元素添加到列表

    def toUpper(L):
           return [x.upper()  for x in L if isinstance(x,str)]
    

      多层表达式

                 多层for循环来生成列表

                  print [100*n1+10*n2+n3 for n1 in range(1,10) for n2 in range(0,10) for n3 in range(1,10) if n1==n3]

  • 相关阅读:
    c++重点笔记2
    c++学习笔记重点1
    创业思路(3) 传统行业与互联网思维
    创业思路(2) 社交
    创业思路(1)
    Asp.Net实现Http长连接推送
    又回来了
    2021.10.23软件更新公告
    2021.10.22软件更新公告
    SharePoint 2013 新特性 (三) 破改式 —— 设计管理器的使用 [2.HTML变身模板页]
  • 原文地址:https://www.cnblogs.com/zqlmmd/p/5533958.html
Copyright © 2011-2022 走看看