Python中的列表跟C/C++里面的数组什么关系?

在这里插入图片描述

你好,我是安然无虞。

文章目录

  • Python数据类型·列表
    • 创建列表
    • 新增列表元素
      • append方法
      • insert方法
    • 删除列表元素
      • pop方法
      • remove方法
    • 查找列表元素
      • in相关
      • index方法
    • 下标访问列表元素
      • 负索引
    • 遍历列表元素
    • 子列表提取
    • 拼接列表
      • + 相关
      • extend方法
    • 列表常用接口汇总
      • 列表操作
      • 列表的成员函数

在这里插入图片描述

Python数据类型·列表

列表(list)是一种有序和可更改的集合,列表中允许存在重复的成员。

创建列表

创建空列表

在Python中[]表示一个空列表。比如:

a = []

print(type(a)) # 
print(a) 			 # []

还可以通过list()的方式来创建一个空列表,比如:

a = list()

print(type(a)) # 
print(a) 			 # []

创建非空列表

创建列表时可以在[]中设置列表的初始值。比如:

a = [1, 2, 3, 4, 5]

print(type(a)) # 
print(a)       # [1, 2, 3, 4, 5]

需要注意的是,列表可以存放不同类型的元素。比如:

a = [1, 'hello', [2, 3, 4]]

print(type(a)) # 
print(a)	   # [1, 'hello', [2, 3, 4]]

新增列表元素

append方法

使用append方法可以在列表末尾新增一个元素。比如:

a = [1, 2, 3, 4]

a.append('2024')
a.append('dragon year')

print(a) # [1, 2, 3, 4, '2024', 'dragon year']

insert方法

使用insert方法可以指定下标位置新增元素。比如:

a = [1, 2, 3, 4]

a.insert(1, 5)
a.insert(10, 'hello') 

print(a) # [1, 5, 2, 3, 4, 'hello']

说明一下:

  • Python是一种面向对象的编程语言,因此创建出来的列表本质上是一个对象,而这里的append和insert方法都是列表的成员方法
  • 调用insert方法时,如果指定的索引下标超过了列表中的最大下标,则将待插入的元素插入到列表的末尾

删除列表元素

pop方法

使用pop方法可以删除列表最末尾的元素。比如:

a = [1, 2, 3, 4]
a.pop()

print(a) # [1, 2, 3]

使用pop方法还可以删除指定下标位置的元素。比如:

a = [1, 2, 3, 4]
a.pop(1)

print(a) # [1, 3, 4]

remove方法

使用remove方法可以指定删除列表中特定值的元素。比如:

a = [1, 2, 3, 4]
a.remove(1)

print(a) # [2, 3, 4]

如果列表中存在多个特定值的元素,那么remove方法只删除其中首次出现的元素。比如:

a = [1, 2, 3, 4, 1]
a.remove(1)

print(a) # [2, 3, 4, 1]

查找列表元素

in相关

使用 in 和 not in 操作符能够判断某个元素是否在列表中存在。比如:

a = [1, 2, 3, 4]

print(1 in a)     # True
print(5 in a)     # False
print(1 not in a) # False
print(5 not in a) # True

index方法

使用index方法也可以判断某个元素在列表中是否存在。比如:

a = [1, 2, 3, 4]

print(a.index(1))   # 0
# print(a.index(5)) # 不存在,抛异常

说明一下:

  • 使用index方法时,如果待查找的元素在列表中,返回其下标,若不在,则抛异常。

下标访问列表元素

这个就不用代码演示了,与C/C++中数组的使用差不多,说明一下即可:

  • 通过下标操作符[]可以读取以及修改指定下标元素的值
  • 如果指定下标的值超出了列表的最大下标,则会抛出异常

负索引

平时我们所说的下标都是从 0 开始的,而在Python中下标是可以取负数的,我们称之为负索引,负索引其实就是从列表的最后一个元素往前,以此为-1,-2,-3… 比如:

   a = [1, 2, 3]
索引:    0  1  2
负索引:  -3 -2 -1

如果想要访问列表的最后一个元素,直接指定下标为-1即可。比如:

a = [1, 2, 3, 4]
print(a[-1])

遍历列表元素

可以使用for循环和while循环,都是比较简单的,这里我们说一下for循环的使用。

Python中for循环可以直接遍历一个可迭代对象。比如:

a = [1, 2, 3, 4]

for i in a:
    print(i)

需要注意的是,上面这个方法对循环变量修改不会影响列表中变量的值。比如:

a = [1, 2, 3, 4]
for i in a:
    print(i)
    i += 10 # 不会影响列表中的元素值

print(a)    # [1, 2, 3, 4]

除此之外,还可以使用for循环遍历列表元素下标,然后以下标的方式依次遍历列表中的元素。比如:

a = [1, 2, 3, 4]

for i in range(len(a)):
    print(a[i])

以这种方式访问列表中的元素,可以修改列表中元素的值。比如:

a = [1, 2, 3, 4]
for i in range(len(a)):
    print(a[i])
    a[i] += 10 # 会影响列表中的元素值
    
print(a)       # [11, 12, 13, 14]

子列表提取

[起始下标 : 结束下标] (前闭后开)

[起始下标 : 结束下标]可以从列表中提取出,从起始下标到结尾下标前一个元素的子列表。比如:

a = [1, 2, 3, 4]
print(a[1:3]) # [2,3]

切片时省略边界

提取子列表的过程也叫做切片的过程,以[起始下标 : 结束下标]的方式切片时可以忽略起始和结束下标。

  • 如果以[起始下标 : ]的方式进行切片,则子列表中的元素包括起始下标的元素及其后续元素
  • 如果以[ : 结束下标]的方式进行切片,则子列表中的元素包括结束下标之前的所有元素
  • 如果以[ : ]的方式进行切片,则子列表中的元素包括原列表中的所有元素

切片示例:

a = [1, 2, 3, 4]
print(a[1:])   # [2, 3, 4]
print(a[:2])   # [1, 2]
print(a[:-1])  # [1, 2, 3]
print(a[:])    # [1, 2, 3, 4]

切片时指定步长

起始下标 : 结束下标 : 步长的方式切片可以指定步长,每访问一个元素后下标自增几步。比如:

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

切片时指定的步长也可以为负数,这时表示从后往前提取元素。比如:

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

切片时下标越界问题

如果切片时下标超出了有效范围,执行程序后不会抛异常,而是尽可能的把符合要求的元素提取出来。比如:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(a[1:20]) # [2, 3, 4, 5, 6, 7, 8, 9, 0]

拼接列表

+ 相关

使用 + 可以把两个列表拼接到一起。比如:

a = [1, 2, 3]
b = [4, 5, 6]
c = a + b

print(a) # [1, 2, 3]
print(b) # [4, 5, 6]
print(c) # [1, 2, 3, 4, 5, 6]

使用 += 把一个列表拼接到另一个列表的后面。比如:

a = [1, 2, 3]
b = [4, 5, 6]
a += b

print(a) # [1, 2, 3, 4, 5, 6]
print(b) # [4, 5, 6]

extend方法

使用extend方法也可以把一个列表拼接到另一个列表的末尾。比如:

a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)

print(a) # [1, 2, 3, 4, 5, 6]
print(b) # [4, 5, 6]

说明一下:

  • += 和extend方法都可以将一个列表拼接到另一个列表的末尾,但是使用extend方法更高效
  • 因为 a += b 等价于 a = a + b,拼接过程中会先构造拼接后的列表,然后将a 原来的列表释放,再将这个拼接后的列表赋值给a
  • a.extend(b)是直接将b列表中的元素拼接到a列表的后面,避免了不必要的释放操作

列表常用接口汇总

列表操作

列表操作 方式
子列表提取 thislist [start : end : step] (左闭右开)
列表检查 in 和 not in
列表拼接 + 和 +=
列表长度 len()

列表的成员函数

成员函数 功能
clear 清空列表
copy 复制列表
append 在列表末尾追加一个元素
insert 在列表指定位置添加元素
extend 将子列表或任何可迭代的对象添加到当前列表的末尾
pop 删除指定位置的元素(默认是尾元素)
remove 删除指定值的元素(首次出现)
index 返回指定值的元素下标(首次出现)
count 返回具有指定值的元素个数
reverse 反转列表中元素值的顺序
sort 对列表中元素进行排序
遇见安然遇见你,不负代码不负卿。
谢谢老铁的时间,咱们下篇再见~

你可能感兴趣的:(Python手把手教程,python,c语言,学习方法)