前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python高级特性 day4

Python高级特性 day4

原创
作者头像
昆兰
发布2024-07-26 17:02:14
220
发布2024-07-26 17:02:14
举报
文章被收录于专栏:廖雪峰python学习笔记

切片Slice

取列表或元组中的元素

代码语言:python
代码运行次数:0
复制
L[0:n] #取索引0到n-1个元素
L[:n]  #0可以省略
L[-2:] #支持倒数切片


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


#元组和字符串也可以类似取
(0, 1, 2, 3, 4, 5)[:3]
'ABCDEFG'[::2]

迭代

如何判断一个对象是可迭代对象呢?方法是通过collections.abc模块的Iterable类型判断:

代码语言:python
代码运行次数:0
复制
from collections.abc import Iterable
isinstance(123, Iterable)
False

list或tuple的迭代

list或tuple的遍历就是迭代,借助for in循环

代码语言:python
代码运行次数:0
复制
for i in L:
    return
}
#带索引和元素的迭代
for i, value in enumerate(['A', 'B', 'C']):
...     print(i, value)
...
0 A
1 B
2 C

dict的迭代

因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样

代码语言:python
代码运行次数:0
复制
d = {'a': 1, 'b': 2, 'c': 3}
for key in d:
...     print(key) #迭代key

for value in d.values() #迭代value
for k, v in d.items() # 同时迭代key和value

字符串的迭代

代码语言:python
代码运行次数:0
复制
for ch in 'ABC':
...     print(ch)

练习

迭代查找一个list中最小和最大值,并返回一个tuple

代码语言:python
代码运行次数:0
复制
import random
def FindMinAndMax(L):
    if L == []:
        return (None,None)
    else:
        min = L[0]  #索引第一个元素很巧妙
        max = L[0]
        for i in L:
            if i < min:
                min = i
            elif i > max:
                max = i
    return (min,max)

列表生成式

列表生成式相当于把for循环生成的列表进行简化,do的内容提前

写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来

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

for循环后面还可以加上if判断,是一个筛选条件,不能跟else

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

生成器 generator

要创建一个generator,只要把一个列表生成式的[]改成(),但区别于打印元素:

生成器打印元素两种方法

  • next()函数可以获得generator的下一个返回值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的错误

  • 借助for循环,也不用关心StopIteration的问题
代码语言:python
代码运行次数:0
复制
for n in g:
...     print(n)

生成器函数

一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator函数

迭代器

  • next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
  • list、dict、str虽然是Iterable,却不是Iterator
  • 把list、dict、str等Iterable变成Iterator可以使用iter()函数
  • 所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算
  • Iterator甚至可以表示一个无限大的数据流,例如全体自然数。而使用list是永远不可能存储全体自然数的

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 切片Slice
  • 迭代
    • list或tuple的迭代
      • dict的迭代
        • 字符串的迭代
          • 练习
          • 列表生成式
          • 生成器 generator
            • 生成器打印元素两种方法
              • 生成器函数
              • 迭代器
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档