Python(廖)之高级特性

一,  切片(Slice)

(1)切片就是取一个list或tuple的部分元素的常见操作。这属于Python提供的语法特性

(2)实例1:

        取前3个元素: L[0:3]

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

(3) 倒序切片

Python支持L[-1] 取倒数第一个元素,也同样支持倒序切片操作。

(4)实例2:

        取后10个数:L[-10:0]

(5)实例3:

        所有数,每5个去取一个:L[::5]

注释:对于切片操作在三个位置上参数钉钉意义,要清楚。

(6)实例4:

       原样复制一个list:  L[:]

(7) 元组的切分操作之后还是元组。

(8)对字符串的切分操作(视为list),结果还是字符串:

       ‘ABCDEFG’[:3]

注释:在很多编程语言里,针对字符串提供了各种截取函数,其本质就是对字符串的切片,

而Python没有针对字符串的截取函数,而是提供了切片操作。

 

 

二 , 迭代(Iteration)

(1)迭代是指对给定的一个list或tuple,通过for循环来遍历这个list或者tuple。

(2)很多编程语言的迭代是通过下标完成的,如Java:

         for(i=0;i<list.length;i++){

                n= list[i];

}

(3)Python的迭代以for ...  in 来完成,可以作用在任何需要迭代的对象上,,不一定非得要下标,比如dict类型。

d=['a':1 ,'b':2,'c':3]

for key in d:

     print(key)

默认情况下,dict的存储不是按照list的方式顺序排列,所以默认迭代的是Key。

如果要迭代value,可以用 for value in d.values() 

同时迭代key和value,可以用 for k,v in  d.items()

实例:

for  ch in 'ABC' :

      print(ch)

 

(4)如何判断一个对象是否为可迭代对象?

  通过collections模块的Iterable类型判断

实例:

>>>   from   collections import Iterable

>>>   isinstance('abc',Iterable)

>>>   isinstance(123,Iterable)

 

(5) 如果有要求对list实现类似Java的下标循环,如何操作?

使用Python内置的enumerate函数把一个list变成索引---元素对,就可以在for循环中同时迭代索引和元素本身:

>>>  for i ,value in  enumerate(['A','B','C']):

                print(i,value)

 

三,列表生成式

(1)列表生成式即 List  Comprehensions, 是Python内置的非常简单却强大的可以用来创建list的生成式

示例:

要生成一个list :  list[1,2,3,4,5,6,7,8,9,10] ,可以用list(range(1,100))

>>> list(range(1,11))

(2) 生成1*1,2*2,3*3,... ,10*10  示例:

L=[]

for x in range(1,11):

     L.append(x*x)

用列表生成式代替:

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

 

(3) for循环后面加上if判断,可以筛选出仅偶数的平方:

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

(4) 列出当前目录下的所有文件和目录名:

   import  os

   [d  for  d in  os.listdir('.')]

(5)  for循环同时使用两个甚至多个变量进行迭代:

 >>>  d={'x':'A','y':'B','z':'C'}

>>>   for k,v in d.items():

               print(k,'=',v)

 

使用列表生成式迭代两个变量:

>>> d={'x':'A','y':'B','z':'C'}

>>> [k+'='+v for k, v in d.items()]

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值