Python: Star unpacking expressions in for statements

今天发现在 Python 3.11 版本中一个很不错的新特性,可以在 for 循环中使用 unpacking,这意味着可以更灵活地组合迭代对象。

ls = [1, 2, 34]
for i in 1, 2, 3, *ls, 789:
    print(i)
"""
1
2
3
1
2
34
789
"""

其实我第一次知道 for 循环中可以使用 x, y, z 这样的结构,想想也是十分合理,因为它代表了元组结构,类似的还有 x, y = y, x,赋值式的右侧也是一个元组结构。
那么,结合 *ls 这样的解包操作,可以在循环时,迭代对象的前后添加一些额外内容,感觉挺有用的。

在之前只能这样做,看起来并不是非常优雅~:

ls = [1, 2, 3, 4]
for i in [0] + ls + [5]:
    print(i)


# or
ls = [1, 2, 3, 4]
ls = [0, *ls, 5]
for i in ls:
    print(i)
posted @ 2024-02-28 10:58  BuckyI  阅读(6)  评论(0编辑  收藏  举报