python学习笔记-二维列表、元组(6-26)

2023年1月12日11:27:25

多维列表

  • 二维列表

    1、一维列表可以存储一维、线性的数据。例:[20,30,40]

    2、二维列表可以存储二维、表格的数据。

>>> a
[['高小一', 18, 3000, '北京'], ['高小二', 19, 2000, '上海'], ['高小三', 20, 10000, '深圳']]
>>> a[0]
['高小一', 18, 3000, '北京']
>>> a[0][0]
'高小一'
>>> 

内存结构图
python学习笔记-二维列表、元组(6-26)
嵌套循环打印二维列表所有的数据

a=[["高小一",18,3000,"北京"],["高小二",19,2000,"上海"],["高小三",20,10000,"深圳"]]
for m in range(3):             #生成0、1、2的列表(第一维)
    for n in range(4):         #生成列表
        print(a[m][n],end="/t")  #m行、n列,换行
    print()       #打印完一行,换行

元组 tuple

  • 列表和元组的区别
    ①列表属于可变序列,可以任意修改列表中的元素;
    ②元组属于不可变序列,不修改元组中的元素;元组没有增加元素、修改元 素、删除元素相关的方法;

  • 元组支持的操作方法
    1、索引访问
    2、切片操作
    3、连接操作
    4、成员关系操作
    5、比较运算符操作
    6、计数:元组长度len()、最大值 max()、最小值min()、求和sum()等

    • 元组的创建
      1、通过()创建元组。小括号可以省略
>>> a=(10,20,30)
>>> type(a)
<class 'tuple'>

>>> a=10,20,30
>>> type(a)
<class 'tuple'>

>>> a=(1)
>>> type(a)
<class 'int'>
>>> a=(1,)
>>> type(a)
<class 'tuple'>

>>> a=1
>>> type(a)
<class 'int'>
>>> b=1,
>>> type(b)
<class 'tuple'>

注:如果元组只有一个元素,则必须后面加逗号。这是因为解释器会把(1) 解释为整数1,(1,) 解释为元组。

2、通过tuple创建元组
tuple(可迭代的对象)

>>> c=tuple()       #创建空元组
>>> c
()

>>> b=tuple("abc")      #将字符串转成元组
>>> b
('a', 'b', 'c')
>>> d=list("abc")      #将字符串转成列表,列表和元组的方法基本一致
>>> d
['a', 'b', 'c']

>>> m=tuple(range(3))    #生成一个整数序列
>>> m
(0, 1, 2)

>>> n=tuple([10,20,30])   #将列表转成元组
>>> n
(10, 20, 30)

>>> del n                #删除元组
>>> n
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    n
NameError: name 'n' is not defined
>>> 

总结:
①tuple()可以接受列表、字符串、其他序列类型、迭代器等生成数组
②list()可以接受元组、字符串、其他序列类型、迭代器等生成列表

  • 元组的元素访问和计数
    1、元组的元素不能修改
>>> a=(20,30,40)        
>>> a[2]              #访问元组
40
>>> a[1]=1            #元组赋值,不可修改元组的元素
Traceback (most recent call last):
  File "<pyshell#38>", line 1, in <module>
    a[1]=1
TypeError: 'tuple' object does not support item assignment
>>> 

2、元组的元素的访问和列表一样,只不过返回的仍然是元组对象

>>> a=(1,2,3,4,6)
>>> a[1]
2
>>> a[0:2]
(1, 2)
>>> a[:4]
(1, 2, 3, 4)
>>> 

3、列表关于排序的方法list.sorted()是修改原列表对象,元组没有该方法。若要对元组排序,只能用内置函数sorted(tupleObj),并生成新的列表对象。

>>> a=(3,5,1,2,9,10,0)
>>> sorted(a)        #生成新的列表对象
[0, 1, 2, 3, 5, 9, 10]
>>> 

4、

>>> m=1,20
>>> n=3,2
>>> m+n      #拼接
(1, 20, 3, 2)    #仍然是元组
>>> len(m)
2
>>> max(m)
20
>>> min(m)
1
>>> sum(m)
21
  • zip
    zip(列表1,列表2,……)将多个列表对应位置的元组组合成元组,并返回这个zip对象
>>> a=[3,2,1]
>>> b=[4,5,6]
>>> c=[9,8,7]
>>> d=zip(a,b,c)          #压缩
>>> d
<zip object at 0x0000018EB7992FC0>
>>> list(d)               #转化为列表
[(3, 4, 9), (2, 5, 8), (1, 6, 7)]       #列表里面是元组
  • 生成器推导式创建元组
    ①形式上,生成器推导式与列表推导式类似,只是生成器推导式使用小括号。列表推导式直接生成列表对象,生成器推导式生成的不是列表也不是元组,而是一个生成器对象。
    ②可以通过生成器对象,转化为列表或者元组。也可以使用生成器对象的_next_()方法进行遍历,或者直接作为迭代器对象来使用。不管什么方法使用,元素访问结束后,如果需要重新访问其中的元素,必须重新创建该对象。
>>> s=(x*2 for x in range(5))
>>> s
<generator object <genexpr> at 0x0000018EB79A5970>   #生成器
>>> tuple(s)        #转化为元组
(0, 2, 4, 6, 8)
>>> list(s)
[]                 #只能访问一次元素,第二次就为空,需要再次生成,类似于指针
>>> s
<generator object <genexpr> at 0x0000018EB79A5970>
>>> s=(x*2 for x in range(5))
>>> s.__next__()
0
>>> s.__next__()
2
>>> s.__next__()
4
>>> s.__next__()
6
>>> s.__next__()
8
>>> s.__next__()                #遍历到最后没有内容了
Traceback (most recent call last):
  File "<pyshell#86>", line 1, in <module>
    s.__next__()
StopIteration

元组总结
1、原股长的核心特点:不可变序列。
2、远足的访问和处理数列比列表快。
3、与整数和字符串一样,元组可以作为字典的间,列表则永远不能作为字典的键使用。

  • 作者:刘艺霏
  • 原文链接:https://blog.csdn.net/weixin_43288829/article/details/106819054
    更新时间:2023年1月12日11:27:25 ,共 2598 字。