python笔记 线性结构(可迭代对象)

90 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情

0 环境

  • 编辑器:idea
  • 系统版本:win10
  • python版本:3.9.6
  • 惰性求值

1 概念

标题是线性结构与切片,了解了线性结构,切片就迎刃而解,仔细想想哪些可以被称为线性结构呢,顺序存储,顺序访问,可以通过索引访问,且是可迭代对象,在回顾我们之前学的数据结构:列表、元组、字符串、bytes、bytearray,而线性结构的特点是:可以切片(数据结构[start,end])和迭代、len获取长度,可下标索引操作(数据结构[数字])。

2 案例演示

使用常用的列表、元组、字符串进行演示。

def demo():
    lists = [2,3,4]
    for_data(lists)
    tuples = (1,2,3)
    for_data(tuples)
    strs = "hello, world"
    for_data(strs)

def for_data(data):
    for i in data:
        print(f'i --> {i}')
    print("\n")

if __name__ == '__main__':
    demo()

image.png

image.png

3 enumerate

enumerate函数(返回一个可迭代对象)可以同时获取索引和数据项,可以对比vue的v-for,每次循环返回每项的值和索引,没用过的话,可以这么想之前的for只能返回一个索引/值,而enumerate函数,可以同时返回2个值。

def enumerate_demo():
    vals = ["lili", "lisa", "wangsan", "kitty"]

    for i, val in enumerate(vals):
        print(f'i -> {i}, val -> {val}')

if __name__ == '__main__':
    # demo()
    enumerate_demo()

image.png

4 小结

线性结构是需要了解的,知道它的特点:可迭代、可下标访问、可len计算长度、还有一点切片,而之前学的数据结构:列表、元组、字符串、bytes、bytearray都属线性结构,在说回线性结构的特点:这里通过下标来索引访问以及通过len方法来获取长度,之前都会用到,可以先归纳为已学,然后可迭代和切片是我们关注的点,也可以认为是之后要学的知识点的基础,也可看作是基于数据结构的一次拓展,我们又学到enumerate函数,它返回一个可迭代对象,它可以获取索引和数据项两个值,对于一些特殊场景的补充,可以看作为对for的补充。