当前位置: 首页 > news >正文

Python-生成列表

1.生成列表

  • 使用列表前必须先生成列表。

1.1使用运算符[ ]生成列表

  • 在运算符[ ]中以逗号隔开各个元素会生成包含这些元素的新列表。另外,如果[ ]中没有元素就会生成空列表

示例

>>> list01 = []
>>> list01
[]
>>> list02 = [1, 2, 3]
>>> list02
[1, 2, 3]
>>> list03 = ['A', 'B', 'C']
>>> list03
['A', 'B', 'C']

1.2使用list函数生成列表

  • 使用内置函数list可以生成包含各种类型对象(字符串和元组等)的列表

  • 在不传递实参的情况下调用list()会生成空列表

示例

>>> list05 = list()        # [] 空列表
>>> list05              
[]
>>> list06 = list('ABC')   # 由字符串的各个字符生成
>>> list06
['A', 'B', 'C']
>>> list07 = list([1, 2, 3])  # 由列表生成
>>> list07
[1, 2, 3]
>>> list08 = list((1, 2, 3))  # 由元组生成
>>> list08
[1, 2, 3]
>>> list09 = list({1, 2, 3})  # 由集合生成
>>> list09
[1, 2, 3]
>>> list10 = list(range(7))   # 用list函数转换range函数生成数列(可迭代对象)
>>> list10
[0, 1, 2, 3, 4, 5, 6]
>>> list11 = list(range(3, 8))
>>> list11
[3, 4, 5, 6, 7]
>>> list12 = list(range(3, 13, 2))
>>> list12
[3, 5, 7, 9, 11]

1.3指定元素总数生成列表

  • 可以通过关键词 [None] 生成“元素总数确定,但元素的值不确定”的列表

  • 列表[None]只有一个元素None,重复n次[None]后可以生成一个元素总数为n且所有元素都是None的列表。元素总数个数为5时生成的列表如下:

>>> list13 = [None] * 5         # 生成一个元素总数为5且元素都为空的列表
>>> list13
[None, None, None, None, None]

1.4for循环生成列表

  • 生成空列表,然后使用append方法逐一添加元素

x = []
x.append(1)
x.append(2)
x.append(3)
x.append(4)
x.append(5)
x.append(6)
x.append(7)print(x)
  • 使用for语句实现

x = []
for i in range(1, 8):x.append(i)
print(x)
  • 将range函数返回的数列(可迭代对象)转换成列表

x = list(range(1, 8))
print(x)

2. 列表解析式

  • 在实际编程中,列表解析式比较常用

2.1列表解析式形式1

[表达式 for 元素 in 可迭代对象]    # 列表解析式(形式1)

示例:

  • 生成列表[1, 2, 3, 4, 5, 6, 7]

>>> x = [n for n in range (1, 8)]
>>> x
[1, 2, 3, 4, 5, 6, 7]
  • 列表生成过程

  • 生成元素值为1-7各数的平方的列表

>>> x = [n * n for n in range (1, 8)]
>>> x
[1, 4, 9, 16, 25, 36, 49]
  • 生成一个字符串列表,元素的奇数与‘+’拼接,偶数与‘-’拼接的字符串,如‘1+’、‘2-’、‘3+’、‘4-’等

>>> x = [f'{n}{"+" if n % 2 == 1 else "-"} ' for n in range(1, 8) ]
>>> x
['1+ ', '2- ', '3+ ', '4- ', '5+ ', '6- ', '7+ ']

2.2列表解析式形式2

[表达式 for 元素 in 可迭代对象 if 判断表达式]     # 列表解析式(形式2)

调用这种形式的列表解析式后,程序仅在for语句循环中的判断表达式成立时取出元素

示例

  • 生成仅由1-7中的偶数构成的列表

>>> x = [n for n in range(1, 8) if n % 2 ==0]
>>> x
[2, 4, 6]
  • 列表生成过程

2.3嵌套的解析式

  • for语句一般可以嵌套,解析式的for语句也可以嵌套

  • 使用列表解析式生成列表(嵌套的for)

示例:

>>> x = [i * 10 + j for i in range(1,3) for j in range(1, 4)]
>>> x
[11, 12, 13, 21, 22, 23]
  • 列表生成过程

  • 使用嵌套的列表解析式生成二维列表

示例

>>> table = [[ i * 10 + j for i in range(1,3)] for j in range(1, 4)]
>>> table
[[11, 21], [12, 22], [13, 23]]
  • 列表生成过程

  • 使用嵌套的列表解析式生成单位矩阵

>>> im = [ [1 if i == j else 0 for i in range(n)] for j in range(n)]
>>> im
[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]
http://www.lryc.cn/news/17235.html

相关文章:

  • 如何写好controller层
  • MySQL---视图的概念与操作
  • ChatGPT,会是现实世界的MOSS吗?
  • 安卓大厂面试题_安卓开发面经_Android大厂面经(22/30)之JNI全解析
  • 记一次docker虚拟机横向移动渗透测试
  • 计算机网络-物理层
  • Kubernetes Nginx 发布
  • 华为OD机试真题Python实现【非严格递增连续数字序列】真题+解题思路+代码(20222023)
  • 12-render函数
  • 磨金石教育摄影技能干货分享|杨元惺佳作欣赏——诗意人文
  • 在Pandas中通过时间频率来汇总数据的三种常用方法
  • 基于SPI的增强式插件框架设计
  • 176、【动态规划】leetcode ——1143. 最长公共子序列(C++版本)
  • 16行代码采集原神官网角色全图+全语音
  • Unity(二)--通过简单例子了解UGUI几个常用对象操作(Text,Image,Button)
  • 手写一个文件上传demo
  • 通过 Apifox Echo 了解 Content-Length
  • ESP32设备驱动-CPU频率设置
  • 超声波风速风向传感器的技术参数
  • 【vue2每日小知识】实现store中modules模块的封装与自动导入
  • 【Leetcode 剑指Offer】第3天 字符串(简单)
  • 【双指针问题】LeetCode344、345、 844、283问题详解及代码实现
  • Linux基础命令-netstat显示网络状态
  • 液氮恒温器(电学)T9015的技术规格
  • 字节跳动大规模实践埋点自动化测试框架设计
  • 自动化测试优势和劣势
  • 数据结构---顺序表
  • springboot基础
  • 华为OD机试真题Python实现【 时间格式化】真题+解题思路+代码(20222023)
  • android kotlin 协程(五) suspend与continuation