列表(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)

2.列表读取
通过下标索引来读取列表中的元素,下标索引从0开始
#读取第一个元素
data1 =list2[0]print(data1)#索引不存在,会抛出越界异常
data2 = list2[8]print(data2)

使用for语句遍历读取
for i inlist2:print(i)

3.列表修改
通过索引针对性修改
print(list2)#通过索引指定修改某项元素
list2[0] = "pear"
print(list2)

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

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

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

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

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

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

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

通过insert()方法将指定元素插入列表指定的位置中
print(list2)#将元素3插入到第一个位置
list2.insert(0,3)print(list2)

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

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

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

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)

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

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

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

遍历切片
slice1 = list2[:-1]for i inslice1:print(i)

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

list 中的count()方法用来统计元素出现的次数
count_ = list2.count(1)print(count_)

统计字符出现的个数或列表内出现的元素次数等也可以用 Counter方法, Counter 是一个 dict 的子类,用于计数可哈希对象
from collections importCounter
counter_=Counter(list3)print(counter_)#传入含有不可哈希对象列表
count_ =Counter(list2)print(count_)

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_)

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