3 python-高级特性

目标:代码越少越好

1.切片

1).功能:直接选择list或tuple中的子元素。

2).优点:代替循环,减少代码量

3).实现:list[首元素位置:尾元素位置:间隔选择数],tuple(首元素位置:尾元素位置:间隔选择数),list[1,2,3,4,5]

  • 首元素位置:需要选择的首元素索引值,当从0开始时可忽略即,list[:尾元素位置:间隔选择数]
  • 尾元素位置:需要选择的尾元素索引值,实际选择不包括尾元素索引值即,list[1:4],一共选择4-1=3个元素,2,3,4
  • 间隔选择数:格几个选择一个元素,例如,list[::2],结果为1,3,5,其中list[:]表示选择全部元素
>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']>>> L[0:3]
['Michael', 'Sarah', 'Tracy',]>>> L[-2:]          #也可以倒着索引  倒数第一个索引为-1
['Bob', 'Jack']
>>> L[-2:-1]
['Bob']
>>> L[::2]          #选择索引值为偶数的
['Michael', 'Tracy','Jack']

2.迭代

1).定义:如果给定一个list或tuple,通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)

2).优点:没有索引也可以迭代,list、tuple、dict、set都可以,连字符串也行

3).实现:

  • list: 迭代值和索引均可,和tuple、set类似
>>> list = ['A', 'B', 'C']
>>> for value in list...     print(value)
...
ABC>>> for i, value in enumerate(['A', 'B', 'C']):   #实现下标循环
...     print(i, value)
...
0 A
1 B
2 C
  • dict:迭代key、value均可。key:for key in d,value:for value in d.values(),同时迭代key和value:for k, v in d.items()
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:
...     print(key)
...
a
c
b
  • 判断是否可迭代:通过collections模块的Iterable类型判断:
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False

3.列表生成式

1).功能:可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁

2).实现:条件循环和多层循环

  • 条件循环:要生成的元素x * x放到前面,后面跟for循环,循环后面加if判断 if和x*x都可以省
#转成小写字母>>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']
# -*- coding: utf-8 -*-
L1 = ['Hello', 'World', 18, 'Apple', None] #非全是字母,可根据isinstance判断
L2 = [s.lower() for s in L1 if isinstance(s,str)]
# 测试:
print(L2)
if L2 == ['hello', 'world', 'apple']:
    print('测试通过!')
else:
    print('测试失败!')
>>> [x * x for x in range(1, 11) if x % 2 == 0]    
[4, 16, 36, 64, 100]    列表生成式

#等价于下面代码
>>> L = []
>>> for x in range(1, 11):
...    if x%2 == 0
...        L.append(x * x)
...
>>> L
[4, 16, 36, 64, 100] >>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']
  • 多层循环: 可以实现多层循环,也可以循环多个变量
#两层循环,实现全排列>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> [k + '=' + v for k, v in d.items()]
['y=B', 'x=A', 'z=C']

4.生成器

1).定义:当生成很多元素时,列表生成式占用空间大,如果仅仅需要访问前几个元素,后面的空间就浪费了,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。

2).优点:减少空间占用,节约空间。

3).实现:


5.迭代器



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值