文章目录
列表概念:
在实际开发中,经常需要将一组数据存储起来,以便后边使用,在c语言或者Java中是使用数组存储一组数据,Python中没有数组,而是引入了列表。
列表中的所有元素都在一对中括号内 [ ],中括号内的元素之间用逗号分隔开,如下所示:
[element1, element2, element3, …, elementn]
列表中的元素个数不限,元素类型只要是Python支持的数据类型即可,如下列例子:
[“hello”, 2, [1,3,4], 2.3]
上述列表中同时包含了字符串,整型,列表以及浮点型
注意:列表是可以同时包含不同的数据类型,但是通常情况下,为了提高程序的可读性,同一列表中放入同一类型的数据
通常用list代指列表,因为列表的数据类型就是list
一.创建列表
创建列表的方法有两种,如下所示:
1.使用 [ ] 直接创建列表
语法格式:
listname = [element1 , element2 , element3 , ... , elementn]
如下所示,都是列表:
list1 = [1, 2, 3, 4, 5, 6, 7]
list2 = [“hello”, 1, 2.4]
list3 = [“hello”, [1,2], 4]
list4 = [ ] #列表元素可以为空
2.使用list()函数创建列表
使用list()函数可以将其他类型转换为列表类型
语法格式:
listname = list(iteration)
例1:
# 将字符串转换成列表
list1 = list("hello")
print(list1)
# 将元组转换成列表
tuple1 = (1, 2, 3, 4)
list2 = list(tuple1)
print(list2)
# 创建空列表
print(list())
运行结果:
二.访问列表元素
访问列表元素的方式有两种:
1.使用索引方式访问列表元素
语法格式:
listname[i]
注意:在这里索引(i)可以是正数,也可以是负数
例:
list1 = [1,"hello",2.3]
print(list1[2],list1[-2])
运行结果:
2.使用切片方式访问列表元素
语法格式:
listname[start : end : step]
上述的start表示起始索引,end表示结束索引,step表示步长
注意:上述的区间是左闭右开,即 [start,end)
例:
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
print(list1[0:5])
print(list1[0:5:2])
运行结果:
三.添加元素到列表
Python中可以使用+将两个列表拼接起来
例:
list1 = [1, 2, 3]
list2 = ["hello", "Python"]
list3 = list1 + list2
print(list3)
运行结果:
上述拼接是产生一个新的列表,并不是改变原有的列表
Python添加元素到列表的三种方法:
1.使用append()方法添加元素
append()方法是在列表的末尾追加元素
语法格式:
listname.append(obj)
例:
list1 = [1, 2, 3]
#追加元素
list1.append(4)
print(list1)
list1.append("hello")
print(list1)
list1.append((1, 2))
print(list1)
list1.append([1, 2, 3])
print(list1)
运送结果:
使用append()方法添加数据时,是将添加的数据作为一个整体添加到列表中
2.使用extend()方法添加元素
语法格式:
listname.extend(obj)
例:
list1 = [1, 2, 3]
#追加元素
list1.extend("hello")
print(list1)
list1.extend((1, 2))
print(list1)
list1.extend([1, 2, 3])
print(list1)
运行结果:
使用extend()方法在进行添加的时候,是将待添加的obj中的元素逐个添加到列表中,待添加的obj可以是单个的元素,也可以是列表,元组,但是不可以是单个的数字
3.使用insert()方法添加元素
append()方法和extend()方法只能在列表的末尾添加元素,而insert()方法是在列表中间的某个位置插入元素
语法格式:
listname.insert(index , obj)
例:
list1 = [1, 2, 3]
#追加元素
list1.insert(0, 4)
print(list1)
list1.insert(1, (1, 2))
print(list1)
list1.insert(2, [1, 2, 3])
print(list1)
运行结果:
使用insert()方法进行插入时,也会将待插入的对象作为一个整体进行插入,而不是一个一个进行插入
四.删除列表中的元素
Python中可以使用下列4种方法删除元素
1.使用del 来根据索引值删除元素
语法结构:
# 删除指定索引值位置的元素
del listname[index]
# 删除中间一段连续的元素 [start,end)
del listname[start : end]
例:
list1 = [1, 2, 3, 4, 5, 6]
# 删除单个元素
del list1[5]
print(list1)
# 删除区间内的元素
del list1[0: 2]
print(list1)
运行结果:
2.使用pop() 删除元素
语法结构:
listname.pop(index)
index表示下标,如果不写,默认就是删除列表中的最后一个元素
例:
list1 = [1, 2, 3, 4, 5, 6]
list1.pop(0)
print(list1)
list1.pop(1)
print(list1)
list1.pop()
print(list1)
运行结果:
3.使用remove() 删除元素
语法结构:
listname.remove(element)
该方法是根据元素的值进行删除的,而不是下标,remove()方法只会删除第一个和指定值相同的元素,而且必须保证该元素是存在的,否则会报错
例:
list1 = [1, 2, 3, 4, 2, 5, 6]
list1.remove(2)
print(list1)
list1.remove(0)
print(list1)
运行结果:
4.使用clear() 删除列表所有元素
即清空列表
例:
list1 = [1, 2, 3, 4, 2, 5, 6]
list1.clear()
print(list1)
运行结果:
五.列表修改元素
1.修改一个元素
修改单个元素,直接对元素进行赋值就可以
例:
list1 = [1, 2, 3, 4, 2, 5, 6]
list1[0] = 0
list1[-1] = 2
print(list1)
运行结果:
2.修改一组元素
通过切片语法来给一组元素进行赋值
例1:
list1 = [1, 2, 3, 4, 5, 6]
list1[1: 4] = [20, 30, 40, 50]
print(list1)
运行结果:
如果对空的切片进行赋值时,就相当于插入了一组新的元素,空的切片赋值时,不支持单个值,如下所示:
例2:
list1 = [1, 2, 3, 4, 5, 6]
list1[4: 4] = [20, 30, 40, 50]
print(list1)
list1[4: 4] = 90
print(list1)
运行结果:
如果使用字符串进行赋值,会自动将字符串转换成序列,每一个字符就是一个元素
例3:
list1 = [1, 2, 3, 4, 5, 6]
list1[2: 4] = "hiw"
print(list1)
运行结果:
使用切片语法是也可以指定步长,但是要求所赋值的新元素个数与原有的元素个数相同
例4:
list1 = [1, 2, 3, 4, 5, 6]
list1[0: 4: 2] = "hi"
print(list1)
运行结果:
六.列表查找元素
1.index()方法
该方法用来查找某个元素在列表中出现的位置,如果该元素不在,则会报错
语法格式:
listname.index(obj, start, end)
注意:
1.start和end可以都不写,此时会检索整个列表
2.如果只写了start,那么就会从start检索到末尾
3.两个都写,就是检索start到end的元素
例:
list1 = [1, 2, 3, 4, 5, 6]
print(list1.index(1))
print(list1.index(2, 0, 2))
print(list1.index(7))
运行结果:
2.count()方法
count()方法还可以用来统计列表中出现指定元素的次数
语法结构:
listname.count(obj)
如果count的结果返回0就表示不存在该元素
例:
nums = [1, 2, 3, 4, 5, 6, 6, 6, 7]
# 统计元素出现的次数
print("6出现了%d次" % nums.count(6))
# 判断一个元素是否存在
if nums.count(6):
print("列表中存在这个元素")
else:
print("列表中不存在这个元素")
if nums.count(8):
print("列表中存在这个元素")
else:
print("列表中不存在这个元素", nums.count(8))
运行结果: