4. 列表(list)

可以把列表当做是一个有序的容器,在里面可以放很多的元素。

4.1 列表的定义

  • 列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它在支持数字,字符串甚至可以包含列表(所谓嵌套)
  • 列表是写在方括号[]之间的,用逗号分隔开的元素列表
  • 列表索引值以0为开始,-1为从末尾的开始位置
  • 列表可以使用+操作符进行拼接,用*表示重复
>>>user_list = ["铁锤","钢弹","弹头","导弹", "火箭"]
>>>print(user_list[1:4])
['钢弹', '弹头', '导弹']

>>>number_list = [98,88,666,12,-1]
>>>print(user_list + number_list)
['铁锤', '钢弹', '弹头', '导弹', '火箭', 98, 88, 666, 12, -1]

testlist = [1,"测试"]
print(type(testlist[0]))	# 查看元素类型为int
print(type(testlist[1]))	# 查看元素类型为str

4.2 常用方法(功能)

为了方便我们操作列表,Python中对所有列表提供了一些的功能。

操作名称操作方法举例
访问列表元素通过下标直接访问print(list[1])
列表切片使用[: :]list[2:5:2]
遍历列表使用for循环for i in list: print(i)
[增]列表尾部追加使用append方法如下详细说明
[增]列表追加数据使用extent方法如下详细说明
[增]列表插入数据使用insert方法如下详细说明
[删]列表删除数据del:通过索引删除指定位置的元素
remove:移除列表指定值的第一个匹配值。如果没找到会抛异常
如下详细说明
[删]列表尾部弹出使用pop方法如下详细说明
[改]更新列表数据通过下标直接修改list[1] = “Rio”
[查]列表成员关系in,not in2 in list1
[排]列表的反转reverse如下详细说明
[排]列表的排序sort如下详细说明
列表的加法操作+list3 = list1 + list2
  1. 追加,在原列表中尾部追加值。append
   user_list = ["苍老师", "有坂深雪", "大桥未久"]
   print("-----增加前,列表的数据-----")
   print(user_list)
   usertemp = input("请输入你喜欢的女优姓名:")
   user_list.append(usertemp)
   print("-----增加后,列表的数据-----")
   print(user_list)
  1. 扩展,将一个列表中的元素添加另外一个列表。extend
   a = [1,2]
   b = [3,4]
   a.append(b)  # 将b列表当做一个元素,加入到a列表
   print(a)
   a.extend(b)  # 将b列表中的每个元素,逐一加入到a列表
   print(a)
  1. 插入,在原列表的指定索引位置插入值。insert
   user_list = ["苍老师", "有坂深雪", "大桥未久"]

   print("-----增加前,列表的数据-----")
   print(user_list)
   user_list.insert(0, "天海翼")	#指定下标位置插入元素。第一个变量表示下标,第二个变量表示元素(对象)
   user_list.insert(2, "吉泽明步")
   print("-----增加后,列表的数据-----")
   print(user_list)
  1. 在原列表中根据值删除(从左到右找到第一个删除)。remove,注意区别del
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "苍老师", "柚木提娜", "苍老师"]
   print("-----删除前,列表的数据-----")
   print(user_list)
   user_list.remove("苍老师")
   print("-----remove删除后,列表的数据-----")
   print(user_list)
   del user_list[2]
   print("-----del指定元素删除后,列表的数据-----")
   print(user_list)
  1. 在原列表中根据索引踢出某个元素。pop
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "苍老师", "柚木提娜", "苍老师"]
   
   print("-----删除前,列表的数据-----")
   print(user_list)
   
   item1 = user_list.pop()  # 在user_list删除最后一个,并讲删除值赋值给item1
   
   print("-----删除后,列表的数据-----")
   print(user_list)
   item2 = user_list.pop(-2)  # 在user_list中删除下标为-2的值,并将删除值赋值给item2
   print(user_list)
  1. 清空原列表
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "苍老师", "柚木提娜", "苍老师"]
   user_list.clear() 
   print(user_list)
  1. 列表的排序
   user_list = [1,4,2,3,5] 
   user_list.reverse()	#将列表所有元素反转
   user_list.sort()	#将列表元素升序
   user_list.sort(reverse=True)	#将列表元素降序
  1. 查找列表元素(in,not in)
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "苍老师", "柚木提娜", "苍老师"]
   findName = input("请输入你要查找的名字:")
   
   if findName in user_list:
       print("库里包含该关键字")
   else:
       print("没有找到")
       
   mylist = ["a","b","c","a","b"]
   print(mylist.index("a",1,4))	#查询指定下标范围的元素并返回对应数据的下标
   print(mylist.index("a",1,3))	#查找范围左闭右开[1,3),找不到会报错
   print(mylist.count("b"))	#统计某个元素出现的次数

4.3 转换为列表

如果想要让某些元素转换为列表类型,一般需要通过list强转,他的内部其实就是循环每个元素,再将元素追加到列表中。
所以,想要转换为列表类型有要求:必须可以被循环的元素才能转换为列表。

message = "我猜你的枪里没有子弹"
data = list(message)
print(data) # ["我","猜","你","的","枪","里","没","有","子","弹"]

4.4 其他

  1. 获取长度
   user_list = ["苍老师", "有坂深雪", "大桥未久"]
   length = len(user_list)	# len()可以得到列表的长度

   # 用for循环遍历元素
   i = 0
   while i < length:
       print(user_list[i])
       i += 1
  1. 索引
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "Kirara Asuka", "柚木提娜", "吉泽明步"]
   print(user_list[0])
   print(user_list[3])
   print(user_list[-1])
   print(user_list[-4])
  1. 根据索引删除元素
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "Kirara Asuka", "柚木提娜", "吉泽明步"]
   del user_list[1]
   del user_list[3]
  1. 根据索引替换元素
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "Kirara Asuka", "柚木提娜", "吉泽明步"]
   user[0] = "天海翼"
   user[-1] = "仁科百华"
  1. 切片
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "Kirara Asuka", "柚木提娜", "吉泽明步"]
   print( user_list[0:2] )
   print( user_list[1:] )
   print( user_list[:-1] )
  1. 步长
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "Kirara Asuka", "柚木提娜", "吉泽明步"]
   print( user_list[1:4:2] )
   print( user_list[0::2] )
   print( user_list[1::2] )
   print( user_list[4:1:-1] )
  1. for循环
user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "Kirara Asuka", "柚木提娜", "吉泽明步"]
for item in user_list:
	print(item)
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "Kirara Asuka", "柚木提娜", "吉泽明步"]
   for item in user_list:
    if item == "Kirara Asuka":
        continue
    print(item)

4.5 嵌套

列表属于容器,内部可以存放各种数据,所以他也支持列表的嵌套,如:

data = [ "谢广坤",["海燕","赵本山"],True,[11,22,33,44],"宋小宝" ]

对于嵌套的值,可以根据之前学习的索引知识点来进行学习,例如:

data = [ "谢广坤",["海燕","赵本山"],True,[11,22,33,44],"宋小宝" ]
print( data[0] )
print( data[1] )
print( data[0][2] )
print( data[1][-1] )
data.append(666)
print(data)
del data[-2]
print(data)
data[1].append("谢大脚")
print(data)

练习题

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐