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]

  • 相关阅读:
    hiveserver2 with kerberos authentication
    python Basic usage
    python Quicksort demo
    Python HeapSort
    mrunit for wordcount demo
    CCDH证书
    Hadoop question list
    Hadoop Yarn core concepts
    Hadoop Resource
    Hadoop could not find or load main class
  • 原文地址:https://www.cnblogs.com/zqlmmd/p/5533958.html
Copyright © 2011-2022 走看看