Python【Feature】高级特性

本文详细介绍了Python的高级特性,包括切片操作、迭代器的使用,特别是列表生成式和生成器的概念及应用。列表生成式可以简洁地生成列表,而生成器则是一种节省内存的迭代方式。通过实例解析了生成器函数的实现和遍历输出,展示了如何自定义迭代器类。
摘要由CSDN通过智能技术生成

切片 Slice

[startWith : end : step]
切片适用于 list、tuple、string
startWith是包含,end则不包含

注意:
切片是从左往右切的
如果用正索引开始,就要用 正索引 或 逆索引 结束,例如 s[1:5] 或 s[1:-3]

!如果用逆索引开始,就要用 逆索引 结束(s[-1:1] 这样只会返回空字符串,正确应该是 s[-5:-1]
!逆索引记得不要弄颠倒了。(s[-1:-3] 这样只会返回空字符串,正确应该是s[-3:-1]

索引

|  P  |  y  |  t  |  h  |  o  |  n  |
   0     1     2     3     4     5            # 从左往右,下标从0开始
  -6    -5    -4    -3    -2    -1            # 从右往左,下标从-1开始
>>> s = 'Python'
>>> s[0]
'P'
>>> s[0:-1]     # 结束索引不被截取
'Pytho'
>>> s[:5]       # 起始索引可以省略不写,代表从第一位开始截取
'Pytho'
>>> s[0:]       # 结束索引可以省略不写,代表截取至最后一位
'Python'
>>> s[:]        # 等于复制了一整个
'Python'

>>> s[1:4]
'yth'
>>> s[1:-2]
'yth'
>>> s[-2:1]     # 逆索引开始,不能以正索引结束
''
>>> s[-5:-2]
'yth'
>>> s[-2:-5]    # 只能从左往右切
''
>>> l = list(range(100))

>>> l[10:20]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

>>> l[10:20:3]
[10, 13, 16, 19]

>>> l[80::3]
[80, 83, 86, 89, 92, 95, 98]

>>> l[:10:3]
[0, 3, 6, 9]

>>> l[::10]
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

>>> l[::-10]
[99, 89, 79, 69, 59, 49, 39, 29, 19, 9]

迭代 Iteration

判断是否迭代对象

可以用过 collections 的 Iterable 类型,用 isinstance()判断 一个对象是否是可迭代对象

from collections import Iterable

str = 'abc'
l = [1, 2, 3]
t = (1, 2, 3)
d = {
   1: 1, 2: 2, 3: 3}
s = ({
   1, 2, 3})

print(isinstance(str, Iterable))    # True
print(isinstance(l, Iterable))      # True
print(isinstance(t, Iterable))      # True
print(isinstance(d, Iterable))      # True
print(isinstance(s, Iterable))      # True
print(isinstance(123, Iterable))    # False  整数字面量不是可迭代对象

迭代 List 列表类型数据

s = 'abcdefg'
for value in s:
    print(value, end=' ')

# Output:
a b c d e f g
# 可以通过 enumerate() 给string,list,tuple 等生成下标

s = 'abcdefg'
for i, value in enumerate(s):
    print(i, value)

# Output:
0 a
1 b
2 c
3 d
4 e
5 f
6 g
l = ['a', True, (1, 2), 43]
for i, value in enumerate(l):
    print(i, value)

# Output:
0 a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TCP404

老板大方~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值