Python - 数据容器list(列表)

简介: Python - 数据容器list(列表)

列表的定义

列表内的每一个数据,称之为元素

  • 以 [] 作为标识
  • 列表内每一个元素之间用, 逗号隔开

my_list=['csdn',"ssss",666,True,[1,2,3]]
print(my_list)
print(type(my_list))

注意:列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套

列表的下标(索引)

正向索引:从前向后的方向,从0开始,依次递增

反向索引:从后向前:从-1开始,依次递减(-1、-2、-3......)

my_list=['csdn',"ssss",666,True,[1,2,3]]
print(my_list[0])
print(my_list[1])
print(my_list[2])
print(my_list[-1])
print(my_list[-2])
print(my_list[-3])
csdnssss666[1, 2, 3]True666

嵌套的列表同理

my_list2=[[1,2,3],[4,5,6],[7,8,9]]
print(my_list2[0][0])
print(my_list2[-1])
print(my_list2[-1][-1])

1

[7, 8, 9]

9

列表的常用操作

查找某元素的下标index

功能:查找指定元素在列表的下标,如果找不到,报错ValueError

语法:列表.index(元素)

index就是列表对象(变量)内置的方法(函数)

my_list=['csdn',"ssss",666,True,[1,2,3]]
tmp=my_list.index(666)
print(tmp)

2

修改特定位置(索引)的元素值

语法:列表[下标] = 值

可以使用如上语法,直接对指定下标(正向、反向下标均可)的值进行:重新赋值(修改)

my_list2=[[1,2,3],[4,5,6],[7,8,9],666]
my_list2[-1]=777
my_list2[2][1]=888print(my_list2)

[[1, 2, 3], [4, 5, 6], [7, 888, 9], 777]

插入元素insert

语法:列表.insert(下标, 元素),在指定的下标位置,插入指定的元素

my_list=['csdn',"ssss",666,True,[1,2,3]]
my_list.insert(1,789)
print(my_list)

['csdn', 789, 'ssss', 666, True, [1, 2, 3]]

追加元素append

语法:列表.append(元素),将指定元素,追加到列表的尾部

my_list=['csdn',"ssss",666,True,[1,2,3]]
my_list.append([6,6,6])
my_list.append(False)
print(my_list)

['csdn', 'ssss', 666, True, [1, 2, 3], [6, 6, 6], False]

追加元素方式extend

语法:列表.extend(其它数据容器),将其它数据容器的内容取出,依次追加到列表尾部

my_list=['csdn',"ssss",666,True,[1,2,3]]
my_list.extend([123,"sb",[6]])
print(my_list)

['csdn', 'ssss', 666, True, [1, 2, 3], 123, 'sb', [6]]

删除元素pop与del

语法1: del 列表[下标]

语法2:列表.pop(下标)


pop删除元素并返回删除的元素

my_list=['csdn',"ssss",666,True,[1,2,3]]
my_list.pop(0)
print(my_list)
tmp=my_list.pop(2)
print(my_list)
print(tmp)

['ssss', 666, True, [1, 2, 3]]

['ssss', 666, [1, 2, 3]]

True


del为指定删除,不返回删除元素

my_list=['csdn',"ssss",666,True,[1,2,3]]
del my_list[0]
print(my_list)
del my_list[-1]
print(my_list)

['ssss', 666, True, [1, 2, 3]]

['ssss', 666, True]


删除某元素在列表中的第一个匹配项remove

语法:列表.remove(元素)

删除从前往后第一个元素

my_list=['csdn',True,"ssss",True,666,True,[1,2,3]]
my_list.remove(True)
print(my_list)
my_list.remove([1,2,3])
print(my_list)

['csdn', 'ssss', True, 666, True, [1, 2, 3]]

['csdn', 'ssss', True, 666, True]


清空列表内容clear()

语法:列表.clear()

my_list=['csdn',"ssss",666,True,[1,2,3]]
my_list.clear()
print(my_list)

[]


统计某元素在列表内的数量count

语法:列表.count(元素)

my_list=['csdn',"ssss",666,True,[1,11,"111",'1'],1,1,1]
num1=my_list.count(1)
num2=my_list.count("csdn")
print(num1)
print(num2)

4

1


可见,count会查找容器里面所以同类型元素,包括嵌套容器里面的


统计列表内元素len

语法:len(列表)

my_list=['csdn',"ssss",666,True,[1,11,"111",'1']]
num=len(my_list)
print(num)
5

不包括嵌套容器里面元素

使用方法总结

image.png

列表特点

经过上述对列表的学习,可以总结出列表有如下特点:

  1. 可以容纳多个元素(上限为2**63-1、9223372036854775807个)
  2. 可以容纳不同类型的元素(混装)
  3. 数据是有序存储的(有下标序号)
  4. 允许重复数据存在
  5. 可以修改(增加或删除元素等)

列表的遍历

- while循环

my_list=['csdn',True,"ssss",True,666,True,[1,2,3]]
index=0while index<len(my_list):
    e=my_list[index]
    print(e)
    index+=1print(my_list)

csdn

True

ssss

True

666

True

[1, 2, 3]

['csdn', True, 'ssss', True, 666, True, [1, 2, 3]]


- for循环

my_list=['csdn',True,"ssss",True,666,True,[1,2,3]]
for i in my_list:
    print(i)
print(my_list)

csdn

True

ssss

True

666

True

[1, 2, 3]

['csdn', True, 'ssss', True, 666, True, [1, 2, 3]]


while循环和for循环,都是循环语句,但细节不同:

在循环控制上:


while循环可以自定循环条件,并自行控制


for循环不可以自定循环条件,只可以一个个从容器内取出数据

在无限循环上:


while循环可以通过条件控制做到无限循环


for循环理论上不可以,因为被遍历的容器容量不是无限的

在使用场景上:


while循环适用于任何想要循环的场景


for循环适用于,遍历数据容器的场景或简单的固定次数循环场景


相关文章
|
3天前
|
索引 Python
List(列表)
List(列表)。
11 4
|
1月前
|
测试技术 开发者 Python
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
在 Python 中,创建列表有两种方法:使用方括号 `[]` 和调用 `list()` 函数。虽然两者都能创建空列表,但 `[]` 更简洁、高效。性能测试显示,`[]` 的创建速度比 `list()` 快约一倍。此外,`list()` 可以接受一个可迭代对象作为参数并将其转换为列表,而 `[]` 则需要逐一列举元素。综上,`[]` 适合创建空列表,`list()` 适合转换可迭代对象。
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
|
17天前
|
JavaScript 数据管理 虚拟化
ArkTS List组件基础:掌握列表渲染与动态数据管理
在HarmonyOS应用开发中,ArkTS的List组件是构建动态列表视图的核心。本文深入探讨了List组件的基础,包括数据展示、性能优化和用户交互,以及如何在实际开发中应用这些知识,提升开发效率和应用性能。通过定义数据源、渲染列表项和动态数据管理,结合虚拟化列表和条件渲染等技术,帮助开发者构建高效、响应式的用户界面。
151 2
|
26天前
|
NoSQL 关系型数据库 MySQL
Redis 列表(List)
10月更文挑战第16天
16 2
|
1月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
1月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
1月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
1月前
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
25 3
|
1月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
1月前
|
索引 Python
Python列表操作-推导式(List Comprehension)
Python列表操作-推导式(List Comprehension)