Skip to content

Latest commit

 

History

History
170 lines (113 loc) · 3.9 KB

209-694985-列表_可迭代对象_iterable_转化为列表.sy.md

File metadata and controls

170 lines (113 loc) · 3.9 KB
show version enable_checker
step
1.0
true

列表 - 可迭代对象 - iterable

回忆

  • 上次了解了列表生成
    • 列表作为一个序列容器
  • 可以通过range函数返回值得到
  • 数值序列 range
    • start、stop、step
    • 负数
    • 前闭后开
  • 还有其他元素可以转化为列表吗?🤔

字符串

  • 试试

图片描述

  • 直接把字符串当做 list 的参数就可以了
  • 每个字符都是一个列表项
  • 中文也是一样么?

字符串

图片描述

  • 太方便了
  • 那能把 list 转回 str 么?

图片描述

  • 看起来不行
    • 不过没事
    • 有什么办法吗?

eval

  • eval 可以把字符串变成相应的数据类型

图片描述

  • 能把字符串切分么?

切分

  • 让字符串
    • 调用自身的 split 方法
    • 返回的就是一个 list
    • 有点像 readlines
      • 通过\n把读到的东西
    • 切分成列表

图片描述

文件

图片描述

  • 运行结果

图片描述

  • 为什么文件f、字符串、range函数返回的结果对象
    • 都可以转化为列表呢?

查看说明文档

  • list类构造函数的参数
    • 应该是一个iterable的

图片描述

  • 什么是iterable呢?

    • 就是可以循环遍历的东西
    • 比如
      • 文件对象里面
        • 有很多行
      • 字符串对象里面有
        • 很多字符
      • 字符串切分对象里面
        • 有很多字符串
      • range函数返回
        • 很多数字
  • 如果是字节序列呢?

字节序列

图片描述

  • 看起来是把 ascii 字符的二进制数字存进了列表
  • 确认一把

图片描述

  • 确实如此
  • 更通用的数字呢?

通用字节

  • 任意字节

图片描述

  • 97确实是"a"字符 ascii 序数
  • 被作为列表的第一个元素
  • 中文字节流怎么办?

中文字节流

图片描述

  • 不好解决的样子
  • 先编码为 utf-8

图片描述

  • 然后在和 ascii 拼接
  • 先得到个字节序列

图片描述

字节序列

图片描述

  • 这样就把两个字符对应的 4 个字节
    • 分别存成了列表项
    • 如果想要分字符进行存储
  • 手动是可以解决

图片描述

  • 但是如果我想批量自动解决呢?

自动解决

图片描述

  • 这用到了 for 语句
  • 不会也没事
  • 我们先去总结一下

总结

  • 这次了解了通过可迭代对象生成列表
  • 可迭代对象包括
    • 文件对象
    • 字符串对象
    • range函数返回结果对象
    • 字节序列
  • 字符串序列 s
    • 可以把每个字符转化为列表项
    • split 切分出列表项
    • 中文无压力
  • 字节流序列 byte
    • 可以直接把字节流转化为相应的数字列表
    • 每个列表项都是一个字节
  • 如何选择每一个列表项呢?🤔
  • 下次再说 👋