【Python复习巩固 Day2】非常有用的高级特性

本文介绍Python编程中的高效代码编写技巧,包括一行代码实现功能、切片操作、迭代、列表生成式及生成器的使用,旨在帮助程序员提升代码质量和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一行代码实现的功能,决不写5行代码
在Python中,代码不是越多越好,而是越少越好。代码不是越复杂越好,而是越简单越好

切片

对于经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片操作符

name_list = ['Tom', 'Sam', 'Martin', 'Bob', 'Jack']
print(name_list[0:3])
['Tom', 'Sam', 'Martin']

Process finished with exit code 0

[0:3] 从索引0开始,直到索引3为止,但不包括索引3,如果第一个索引为0,则可以省略
[-2:] 从倒数第二个元素开始,直到结尾,包括最后一个元素
[:] 选取所有元素
[:10:2] 前十个元素,每两个取一次
[::5] 所有元素,每五个取一次

name_list = ['Tom', 'Sam', 'Martin', 'Bob', 'Jack']
print(name_list[0:3])
print(name_list[:])
print(name_list[-2:])
print(name_list[:2])
num_list = list(range(20))
print(num_list[:10:2])
print(num_list[::5])
['Tom', 'Sam', 'Martin']
['Tom', 'Sam', 'Martin', 'Bob', 'Jack']
['Bob', 'Jack']
['Tom', 'Sam']
[0, 2, 4, 6, 8]
[0, 5, 10, 15]

Process finished with exit code 0

迭代

在Python中,for循环不仅可以用在list和tuple上,还可以作用在其他可迭代的对象上

字典迭代

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

# 迭代key
for key in d:
    print(key, d[key])


for key, value in d.items():
    print(key, value)
a 1
b 2
c 3
d 4
a 1
b 2
c 3
d 4

Process finished with exit code 0

当我们使用for循环时,只要作用于一个可迭代的对象,for循环就可以正常运行

# 判断一个对象是否可以迭代
print(isinstance('abc', Iterable))
print(isinstance([1, 2, 3], Iterable))
print(isinstance(456, Iterable))
True
True
False

任何可迭代的对象都可以作用于for循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用for循环

列表生成式

列表生成式是Python内置的非常简单却强大的功能

print(list(range(1, 10)))
print([x * x for x in range(10)])
print([x for x in range(10) if x % 2 == 0])
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[0, 2, 4, 6, 8]

Process finished with exit code 0

eg:列出当前目录下的所有文件名

print([name for name in os.listdir('.')])
['example1.py', 'example2.py', 'example3.py']

eg:把列表中字符串变为小写

print([s.lower() for s in ['Hello', 'World']])
['hello', 'world']

运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而且代码却十分简洁

生成器

在Python中,一边循环一边计算的机制,称为生成器,使用生成器可以节省内存

g = (x * x for x in range(100))
print(g)
print(next(g))
print(next(g))
<generator object <genexpr> at 0x000001CF05F52D48>
0
1

generator保存的是算法,每次调用next(g),就可以计算出g的下一个元素的值,直到计算到最后一个元素,当没有更多元素时,抛出StopIteration的错误

我们同样可以使用for循环来遍历一个迭代器

for i in g:
    print(i)

eg:斐波拉契数列

def fib(n):
    """
    生成兔子数列
    :param n:
    :return:
    """
    x, a, b = 0, 0, 1
    while x < n:
        yield b
        a, b = b, a + b
        x += 1
    return 'done'


for i in fib(10):
    print(i)
1
1
2
3
5
8
13
21
34
55

Process finished with exit code 0

generator是非常强大的工具,在Python中,可以简单的把列表生成式改成generator,也可以通过函数实现复杂逻辑的generator

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值