书接上文,本篇继续来进行讲解Python常见数据类型。

J6cEdK.png

4. 列表(list)

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

4.1 列表的定义

1
2
3
user_list = ["铁锤","钢弹","弹头"]
number_list = [98,88,666,12,-1]
data_list = [1,True,"szk"]

4.2 常用方法(功能)

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

  1. 追加,在原列表中尾部追加值。

    1
    2
    3
    4
    5
    6
    data_list = []
    v1 = input("请输入姓名")
    v2 = input("请输入昵称")
    data_list.append(v1)
    data_list.append(v2)
    print(data_list)
  2. 插入,在原列表的指定索引位置插入值

    1
    2
    3
    4
    user_list = ["苍老师","有坂深雪","大桥未久"]
    user_list.insert(0,"马蓉")
    user_list.insert(2,"李小璐")
    print(user_list)
  3. 扩展,讲一个列表中的元素添加另外一个列表。

    1
    2
    3
    4
    tools = ["搬砖","菜刀","榔头"]
    weapon = ["AK47","M6"]
    tools.extend(weapon) # weapon中的值逐一追加到tools中
    print(tools)
  4. 在原列表中根据值删除(从左到右找到第一个删除)

    1
    2
    3
    user_list = ["王宝强","陈羽凡","Pounds","贾乃亮","Pounds"]
    user_list.remove("Pounds")
    print(user_list)
  5. 在原列表中根据索引踢出某个元素

    1
    2
    3
    user_list = ["王宝强","陈羽凡","Pounds","贾乃亮","Pounds"]
    ele = user_list.pop() # 在user_list删除最后一个,并讲删除值赋值给ele
    item = user_list.pop(2) # 在user_list中删除索引未2的值,并将删除值赋值给item
  6. 清空原列表

    1
    2
    3
    user_list = ["王宝强","陈羽凡","Pounds","贾乃亮","Pounds"]
    user_list.clear()
    print(user_list)
  7. 反转原列表

    1
    2
    3
    user_list = ["王宝强","陈羽凡","Pounds","贾乃亮","Pounds"]
    user_list.reverse()
    print(user_list)

4.3 转换为列表

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

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

4.4 其他

  1. 获取长度
1
2
user_list = ["范德彪","刘华强",'尼古拉斯赵四']
print( len(user_list) )
  1. 索引
1
2
3
4
user_list = ["范德彪","刘华强",'尼古拉斯赵四']
print( user_list[0] )
print( user_list[2] )
print( user_list[3] )
  1. 根据索引删除元素
1
2
3
user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
del user_list[1]
del user_list[3]
  1. 根据索引替换元素
1
2
3
user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
user[0] = "王大拿"
user[-1] = "广坤"
  1. 切片
1
2
3
4
user_list = ["范德彪","刘华强",'尼古拉斯赵四']
print( user_list[0:2] )
print( user_list[1:] )
print( user_list[:-1] )
  1. 步长
1
2
3
4
5
user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
print( user_list[1:4:2] )
print( user_list[0::2] )
print( user_list[1::2] )
print( user_list[4:1:-1] )
  1. for循环
1
2
3
user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
for item in user_list:
print(item)
1
2
3
4
5
user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
for item in user_list:
if item == '刘华强':
continue
print(name)

4.5 嵌套

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

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

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

1
2
3
4
5
6
7
8
9
10
11
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)

练习题

  1. 写代码,有如下列表,按照要求实现每一个功能。

    1
    li = ["pounds", "szk", "haoda", "barry", "devops"]
    • 计算列表的长度并输出
    • 请通过步长获取索引为偶数的所有值,并打印出获取后的列表
    • 列表中追加元素”seven”,并输出添加后的列表
    • 请在列表的第1个位置插入元素”Tony”,并输出添加后的列表
    • 请修改列表第2个位置的元素为”Kelly”,并输出修改后的列表
    • 请删除列表中的元素”haoda”,并输出添加后的列表
    • 请删除列表中的第2个元素,并输出删除元素后的列表
    • 请删除列表中的第2至第4个元素,并输出删除元素后的列表
  2. 写代码,有如下列表,利用切片实现每一个功能

    1
    li = [1, 3, 2, "a", 4, "b", 5,"c"]
    • 通过对li列表的切片形成新的列表 [1,3,2]
    • 通过对li列表的切片形成新的列表 [“a”,4,”b”]
    • 通过对li列表的切片形成新的列表 [1,2,4,5]
    • 通过对li列表的切片形成新的列表 [3,”a”,”b”]
    • 通过对li列表的切片形成新的列表 [3,”a”,”b”,”c”]
    • 通过对li列表的切片形成新的列表 [“c”]
    • 通过对li列表的切片形成新的列表 [“b”,”a”,3]
  3. 写代码,有如下列表,按照要求实现每一个功能。

    1
    lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
    • 将列表lis中的”k”变成大写,并打印列表。
    • 将列表中的数字3变成字符串”100”
    • 将列表中的字符串”tt”变成数字 101
    • 在 “qwe”前面插入字符串:”火车头”
  4. 请用代码实现循环输出元素和值:users = [“szk”,”pounds”,”波姐”] ,如:

    1
    2
    3
    0 szk
    1 pounds
    2 波姐
  1. 写代码实现以下功能

    • 如有变量 googs = [‘汽车’,’飞机’,’火箭’] 提示用户可供选择的商品:

      1
      2
      3
      0,汽车
      1,飞机
      2,火箭
    • 用户输入索引后,将指定商品的内容拼接打印,如:用户输入0,则打印 您选择的商品是汽车。

  2. 请用代码实现

    1
    li = "szk"

    利用下划线将列表的每一个元素拼接成字符串”s_z_k”

  3. 利用for循环和range找出 0 ~ 100 以内所有的偶数,并追加到一个列表。

  4. 利用for循环和range 找出 0 ~ 50 以内能被3整除的数,并追加到一个列表。

5. 元祖(tuple)

元组也是一个容器,里面可以存放各种数据(和列表相似),但他有一个特殊的特点:元组的儿子元素不允许添加、不允许修改、不允许删除,只能读。

一般用于存储一些在程序中不应该被修改的一系列值。

5.1 元组的定义

1
2
3
v1 = (11,22,33,)
v2 = ("szk","Pounds",)
v3 = ("szk",)

注意:建议在元组的最后多加一个逗号,用于标识他是一个元组。

5.2 常见操作

5.3 转换

其他类型可以转换为元组,一般可以被循环的元素才能转换,目前我们学到的可以被循环有:字符串和列表。

1
2
3
name = "szk"
data = tuple(name)
print(data) # 输出 ("s","z","k")
1
2
3
name = ["szk",18,"pounds"]
data = tuple(name)
print(data) # 输出 ("szk",18,"pounds")

5.4 其他

元组和列表非常相似,但由于元组的子元素无法修改的特点,所有在元组都没有修改、删除、添加的操作,只有读操作。

  1. 获取长度

    1
    2
    user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
    print( len(user_list) )
  2. 索引

    1
    2
    3
    4
    user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
    print( user_list[0] )
    print( user_list[2] )
    print( user_list[3] )
  3. 切片

    1
    2
    3
    4
    user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
    print( user_list[0:2] )
    print( user_list[1:] )
    print( user_list[:-1] )
  4. 步长

    1
    2
    3
    4
    5
    user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
    print( user_list[1:4:2] )
    print( user_list[0::2] )
    print( user_list[1::2] )
    print( user_list[4:1:-1] )
  5. for循环

    1
    2
    3
    user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
    for item in user_list:
    print(item)
    1
    2
    3
    4
    5
    user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
    for item in user_list:
    if item == '刘华强':
    continue
    print(name)

5.5 嵌套

由于元组和列表都可以充当容器,他们内部可以放很多元素,并且也支持元素内的各种嵌套。

1
2
3
4
5
6
7
8
9
10
tu = ('今天姐姐不在家','姐夫和小姨子在客厅聊天',('姐夫问小姨子税后多少钱','小姨子低声说道说和姐夫还提钱'))
tu1 = tu[0]
tu2 = tu[1]
tu3 = tu[2][0]
tu4 = tu[2][1]

print(tu1) # 今天姐姐不在家
print(tu2) # 姐夫和小姨子在客厅聊天
print(tu3) # 姐夫问小姨子税后多少钱
print(tu4) # 小姨子低声说道说和姐夫还提钱

知识补充:range

range在Python中可以帮助我们快速生成一个特定范围的数字列表

1
2
3
v1 = range(1,6)   # 生成的数为:[1、2、3、4、5]
v2 = range(1,6,2) # 生成的数为:[1、3、4]
v3= range(6,1,-1) # 生成的数为:[6、5、4、3、2]

range和for循环

在项目开发中range一般会和for循环放在一起使用,进而获取一些的数字。

1
2
for i in range(10):
print(i)
1
2
for i in range(2,10):
print(i)
1
2
for i in range(2,10,2):
print(i)
1
2
for i in range(10,0,-1):
print(i)
1
2
3
4
5
6
7
8
9
10
11
12
# 案例
user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
for i in range(0,len(user_list)):
print(i, user_list[i] )

username = "大波姐"
for i in range(0,len(username)):
print(i, username[i] )

num_tuple = ("范德彪","刘华强",'尼古拉斯赵四',)
for i in range(0,len(num_tuple)):
print(i,len(i))

练习题

1
2
3
4
5
6
7
8

利用for循环和range找出100以内所有的偶数并将这些偶数插入到一个新列表中

利用for循环和range 找出50以内能被3整除的数,并将这些数插入到一个新列表中

利用for循环和range从100~1,倒序打印

利用for循环和range循环1-30的数字,将能被3整除的添加到一个列表中,将能被4整除的添加到另外一个列表中。