列表(list)

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可,一个列表中的数据类型可以各不相同,可以同时分别为整数、实数、字符串等基本类型,甚至是列表、元组、字典、集合以及其他自定义类型的对象

1.创建列表

# 创建一个空列表
list1 = list()
# 创建列表中包含各种数据类型列表
list2 = [{"fruit": "水果"}, ("apple", "苹果"), "orange", "橘子", 3.141592654, True, 1]
# 使用list()函数将元组、range对象、字符串或其他类型的可迭代对象类型的数据转换为列表
list3 = list(range(10))
list4 = list((1, 2, 3, 4))
list5 = list("banana")
print(list1)
print(list2)
print(list3)
print(list4)

python中列表解析 python列表的处理_字符串

2.列表读取

通过下标索引来读取列表中的元素,下标索引从0开始

# 读取第一个元素
data1 = list2[0]
print(data1)
# 索引不存在,会抛出越界异常
data2 = list2[8]
print(data2)

python中列表解析 python列表的处理_python中列表解析_02

使用for语句遍历读取

for i in list2:
    print(i)

python中列表解析 python列表的处理_元组_03

3.列表修改

通过索引针对性修改

print(list2)
# 通过索引指定修改某项元素
list2[0] = "pear"
print(list2)

python中列表解析 python列表的处理_python中列表解析_04

通过append()方法增加元素

print(list2)
# 通过append()方法在列表末尾添加列表元素,append()可传入任意数据类型
list2.append(True)
list2.append({"pear": "梨"})
print(list2)

python中列表解析 python列表的处理_迭代_05

通过extend()方法一次性在列表末尾添加一组列表元素,extend()方法只接受一个可迭代的对象作为参数,否则抛出异常'XXXXX' object is not iterable

# 传入str类型
print(list2)
list2.extend("ab")
print(list2)

python中列表解析 python列表的处理_迭代_06

print(list2)
# 传入range对象
list2.extend(range(0, 8, 2))
print(list2)

python中列表解析 python列表的处理_字符串_07

print(list2)
# 传入列表(list)
list2.extend(["what", "why", "when", "how"])
print(list2)

python中列表解析 python列表的处理_迭代_08

print(list2)
# 传入元组(tuple)
list2.extend(("fish", "rood"))
print(list2)

python中列表解析 python列表的处理_元组_09

print(list2)
# 传入字典(dict)
list2.extend({"1": 1, "2": 2})
print(list2)

python中列表解析 python列表的处理_字符串_10

# 传入不可迭代对象的参数
list2.extend(3.415)
print(list2)

python中列表解析 python列表的处理_python中列表解析_11

通过insert()方法将指定元素插入列表指定的位置中

print(list2)
# 将元素3插入到第一个位置
list2.insert(0,3)
print(list2)

python中列表解析 python列表的处理_元组_12

4.删除列表

使用pop()方法移除列表中的元素,若不传入参数,则默认移除末尾的元素,并返回所移除的值

print(list2)
# 使用pop()方法移除列表中的元素,若不传入参数,则默认移除末尾的元素,并返回所移除的值
data1 = list2.pop(1)
data2 = list2.pop()
print(data1)
print(data2)
print(list2)

python中列表解析 python列表的处理_字符串_13

remove()方法指定移除已知元素,若列表中存在多个与传入的参数值匹配,则移除首个匹配元素,无返回值
print(list2)
# remove()方法指定移除已知元素,若列表中存在多个与传入的参数值匹配,则移除首个匹配元素,无返回值
list2.remove('orange')
list2.remove(1)
print(list2)

python中列表解析 python列表的处理_元组_14

使用clear()方法清空列表,无返回值
print(list2)
# 使用clear()方法清空列表,无返回值
list2.clear()
print(list2)

python中列表解析 python列表的处理_迭代_15

5.列表切片

切片适用于列表、元组、字符串、range对象等类型,可以使用切片来截取列表中的任何部分,得到一个新列表,也可以通过切片来修改和删除列表中部分元素,甚至可以通过切片操作为列表对象增加元素

格式:[start:end:step]

start: 切片开始位置,默认为0

end: 切片结束位置(不包含结束位置),默认为列表长度

step: 切片的步长,默认为1,当步长省略时可以顺便省略最后一个冒号

正向切片

# 截取整个list
slice1 = list2[:]
# 截取偶数位置的所有元素
slice2 = list2[::2]
# 截取下标在[2,4)间的所有元素
slice3 = list2[2:4]
# 截取奇数位置的所有元素
slice4 = list2[1::2]
print(slice1)
print(slice2)
print(slice3)
print(slice4)

python中列表解析 python列表的处理_字符串_16

# 当切片时越界并不会报错,直接访问则会抛出越界异常
slice1 = list2[20:]
print(slice1)
slice2 = list2[20]
print(slice2)

python中列表解析 python列表的处理_字符串_17

逆向切片

print(slice1)
# 逆序列表
slice1 = list2[::-1]
print(slice1)

python中列表解析 python列表的处理_迭代_18

print(list2)
# 截取倒数第五位之后的所有元素
slice1 = list2[-4:-1]
print(slice1)

python中列表解析 python列表的处理_元组_19

遍历切片

slice1 = list2[:-1]
for i in slice1:
    print(i)

python中列表解析 python列表的处理_迭代_20

6.list中其他常用方法
list 中的copy()方法复制列表,等价于切片中[:]
copy_ = list2.copy()
slice_ = list2[:]
print(copy_)
print(slice_)

python中列表解析 python列表的处理_字符串_21

list 中的count()方法用来统计元素出现的次数

count_ = list2.count(1)
print(count_)

python中列表解析 python列表的处理_元组_22

统计字符出现的个数或列表内出现的元素次数等也可以用 Counter方法, Counter 是一个 dict 的子类,用于计数可哈希对象

from collections import Counter
counter_ = Counter(list3)
print(counter_)

# 传入含有不可哈希对象列表
count_ = Counter(list2)
print(count_)

python中列表解析 python列表的处理_迭代_23

 list 中的index()方法用来查找某个元素所在的索引位置,当列表中有多个相同的元素时,默认返回第一个匹配的元素索引位置,若找不到则抛出异常

格式:[obj, start, end]

obj :需要查找的对象

start: 起始查找位置,不填写时默认为0

end: 结束查找位置,不包含end,不填写时默认为列表长度

print(list2)
# 查找列表中元素为1的索引位置
index_ = list2.index(1)
print(index_)
# 在索引在区间[3,5)中查找元素为1的索引位置
be_ = list2.index(1, 3, 5)
print(be_)

python中列表解析 python列表的处理_字符串_24

reverse()翻转列表,类似切片中的[::-1]

list2.reverse()
print(list2)

python中列表解析 python列表的处理_元组_25