轩小陌的Python笔记-day06 数据类型

day06 数据类型(中)

常见的数据类型:

  • int,整数类型(整形)
  • bool,布尔类型
  • str,字符串类型
  • list,列表类型
  • tuple,元组类型
  • dict,字典类型
  • set,集合类型
  • float,浮点类型(浮点型)

目标:掌握列表和元组数据类型的各种操作(知识点应用案例)。

课程概要:

  • list,列表类型,用于存储一些数据的容器(有序 & 可修改)。
  • tuple,元组类型,用于存储一些数据的容器(有序 & 不可修改)。

1.列表(list)

列表(list),是一个有序可变的容器,在里面可以存放多个不同类型的元素。

1.1 定义

# 常见列表示例:
user_list =  ["轩老师","坂井泉水","藤原拓海"]
number_list = [98,88,666,12,-1]
data_list = [1,True,"Alex","宝强","乃亮"]
# 列表是一个有序且可变的容器,示例:
user_list = []
user_list.append("铁锤")
user_list.append(123)
user_list.append(True)
print(user_list) 

#输出结果:
["铁锤",123,True]

列表与前面所学的数据类型的区别:

  • 不可变类型:字符串、布尔、整型(最小单位,内部数据无法进行修改)

  • 可变类型:列表(内部数据元素可以修改)

1.2 独有功能

在开始学习列表的独有功能之前,先来做一个字符串和列表的对比:

  • 字符串,不可变,即:创建好之后内部就无法修改。

    name = "alex"
    data = name.upper()
    print(name)
    print(data)
    
    # 输出结果:
    alex
    ALEX
    
  • 列表,可变,即:创建好之后内部元素可以修改。

    user_list = ["车子","房子"]
    user_list.append("票子")
    
    print(user_list) 
    
    # 输出结果:
    ["车子","房子","票子"]
    

列表中的常见独有功能如下:

1.2.1 追加(append)
data_list = []
v1 = input("请输入姓名")		# alex
data_list.append(v1)
v2 = input("请输入姓名")		# eric
data_list.append(v2)
print(data_list) 

# 输出结果:
["alex","eric"]
user_list = []
while True:
    user = input("请输入用户名(Q退出):")
    if user == "Q":
        break
    user_list.append(user)
print(user_list) 
welcome = "欢迎使用NB游戏".center(30, '*')
print(welcome)
user_count = 0
while True:
    count = input("请输入游戏人数:")
    if count.isdecimal():
        user_count = int(count)
        break
    else:
        print("输入格式错误,人数必须是数字。")
message = "{}人参加游戏NB游戏。".format(user_count)
print(message)
# 通过输入玩家姓名,存入列表中并输出
user_name_list = []
for i in range(1, user_count + 1):
    tips = "请输入玩家姓名({}/{}):".format(i, user_count)
    name = input(tips)
    user_name_list.append(name)
print(user_name_list)
1.2.2 extend()

批量追加,将一个列表中的元素逐一添加另外一个列表。

tools = ["搬砖","菜刀","榔头"]
tools.extend( [11,22,33] ) 
print(tools) 

# 输出结果:
["搬砖","菜刀","榔头",11,22,33]
tools = ["搬砖","菜刀","榔头"]
weapon = ["AK47","M6"]
tools.extend(weapon) 
print(tools) 

# 输出结果:
["搬砖","菜刀","榔头","AK47","M6"]
tools = ["搬砖","菜刀","榔头"]
weapon = ["AK47","M6"]
for item in weapon:
    tools.append(item)  
print(tools) 

# tools.extend(weapon) 等价于遍历weapon中的元素,逐一添加到tools中
# 输出结果:
["搬砖","菜刀","榔头","AK47","M6"]
1.2.3 insert()

插入,在原列表的指定索引位置插入值.

user_list = ["轩老师","坂井泉水","藤原拓海"]
user_list.insert(0,"容嬷嬷")
user_list.insert(2,"小燕子")
print(user_list)

# 输出结果:
["容嬷嬷","轩老师","小燕子","坂井泉水","藤原拓海"]
name_list = []
while True:
    name = input("请输入购买火车票用户姓名(Q/q退出):")
    if name.upper() == "Q":
        break
    if name.startswith("刁"):
        name_list.insert(0, name)
    else:
        name_list.append(name)
print(name_list)

# 通过insert(),把所有姓刁的用户放在列表的前面,其他用户放在列表的后面
1.2.4 remove()

在原列表中根据值删除(从左到右找到第一个删除)。注意:如果要删除的元素在列表中不存在,则会报错。

user_list = ["宝强","羽凡","Alex","乃亮","Alex"]
user_list.remove("Alex")
print(user_list)
# 输出结果: ["宝强","羽凡","乃亮","Alex"]


user_list = ["宝强","羽凡","Alex","乃亮","Alex"]
if "Alex" in user_list:
	user_list.remove("Alex")
print(user_list)
# 输出结果: ["宝强","羽凡","乃亮","Alex"]

user_list = ["宝强","羽凡","Alex","乃亮","Alex"]
while True:
    if "Alex" in user_list:
        user_list.remove("Alex")
	else:
        break
print(user_list)
# 输出结果: ["宝强","羽凡","乃亮"]
import random
data_list = ["iphone13", "二手电动车", "一包纸巾", "印度5日游", "床上三件套"]
while data_list:
    name = input("自动抽奖程序,请输入自己的姓名:")
    # 随机从data_list抽取一个值出来
    value = random.choice(data_list) 
    print( "恭喜{},抽中{}.".format(name, value) )
    data_list.remove(value)
    
# 通过random.choice()随机从列表中抽取一个元素,再用remove()将该元素从列表中删除,实现自动抽奖程序
1.2.5 pop()

在原列表中根据索引踢出某个元素(根据索引位置删除)

user_list = ["宝强","羽凡","Alex","乃亮","Alex"]
#               0        1       2       3       4
user_list.pop(1)
print(user_list) #  ["宝强","Alex","乃亮","Alex"]

user_list.pop()
print(user_list) # ["宝强","Alex","乃亮"]
# 如果pop()中不传入参数,则默认踢出列表中最后一个元素

item = user_list.pop(1)
print(item) 		# "Alex"
print(user_list) 	# ["宝强","乃亮"]
# 注意:remove()不会返回值,所以不能赋值给变量,但pop()可以将值返回给变量
# ["alex","李杰","eric","轩小陌","老妖","钢弹"]
user_queue = []
while True:
    name = input("北京~上海火车票,购买请输入姓名排队(Q退出):")
    if name == "Q":
        break
    user_queue.append(name)
# 用户输入姓名后储存到列表user_queue中

ticket_count = 3
for i in range(ticket_count):
    username = user_queue.pop(0)
    message = "恭喜{},购买火车票成功。".format(username)
    print(message)
# 设定剩余票数为3,将user_queue中前3个用户逐一踢出并输出

faild_user = "、".join(user_queue) 	# "轩小陌、老妖、钢弹"
faild_message = "非常抱歉,票已售完,以下几位用户请选择其他出行方式,名单:{}。".format(faild_user)
print(faild_message)
# 对user_queue中剩余的用户格式化输出,从而实现了排队买火车票的功能
1.2.6 clear()

清空原列表

user_list = ["宝强","羽凡","Alex","乃亮","Alex"]
user_list.clear()
print(user_list) 	# 输出结果:[]
1.2.7 index()

根据值获取索引(从左到右找到第一个索引)。注意:如果要找的元素在列表中不存在,则会报错。

user_list = ["宝强","羽凡","Alex","乃亮","Alex"]
#               0       1      2       3      4
if "Alex" in user_list:
	index = user_list.index("Alex")
	print(index) 
else:
    print("不存在")
# 输出结果:2
1.2.8 sort()

列表元素排序

# 数字排序
num_list = [11, 22, 4, 5, 11, 99, 88]
num_list.sort()  # sort()默认从小到大排序
print(num_list)
# 输出结果:[4, 5, 11, 11, 22, 88, 99]
num_list.sort(reverse=True)  
# sort()中传入参数reverse=True,则从大到小排序
print(num_list)
# 输出结果:[99, 88, 22, 11, 11, 5, 4]

# 字符串排序
user_list = ["宝强", "Ab羽凡", "Alex", "乃亮", "贾乃", "1"]
# user_list中各元素中每个字符在unicode中的码位为:
["宝","强"] ----------------------[23453, 24378]
["A","b","羽","凡"]---------------[65, 98, 32701, 20961]
["A","l","e","x"]-----------------[65, 108, 101, 120]
["乃","亮"]-----------------------[20035, 20142]
["贾","乃"]-----------------------[36158, 20035]
["1"]-----------------------------[49]
# 通过对比各字符串中第1个字符对应码位的大小,小在前大再后的原则排序。如果第1个字符相同,则比较第2个字符,以此类推
user_list.sort()
print(user_list)
# 输出结果:['1', 'Ab羽凡', 'Alex', '乃亮', '宝强', '贾乃']

注意:排序时内部元素无法进行比较时,程序会报错,所以要保证列表内数据类型一致。

1.2.9 reverse()

反转原列表

user_list = ["宝强","羽凡","Alex","乃亮","Alex"]
user_list.reverse()
print(user_list)

# 输出结果:
['Alex', '乃亮', 'Alex', '羽凡', '宝强']

注意:reverse()翻转是列表独有的功能,字符串的翻转只能通过索引实现。

列表中remove、pop、del删除功能的区别:
  • remove一般用于删除列表中指定内容的元素,如:alist . remove(’ alex ')
  • pop一般用于删除列表中指定索引位置的元素,如:alist . pop(1)
  • del除了可删除列表中指定内容、索引位置元素,还能删除指定索引区间的元素,如:del alist [1:4]

1.3 公共功能

  1. 相加,两个列表相加获取生成一个新的列表。

    v1 = ["赵四","刘能"]
    v2 = ["宋晓峰","范德彪"]
    v3 = v1 + v2
    print(v3) 
    # 输出结果:["赵四","刘能","宋晓峰","范德彪"]
    
  2. 相乘,列表*整型 将列表中的元素再创建N份并生成一个新的列表。

    data = ["赵四","刘能"] * 2
    print(data) 
    # 输出结果:["赵四","刘能","赵四","刘能"]
    
  3. 运算符 in 包含
    由于列表内部是由多个元素组成,可以通过 in 来判断元素是否在列表中。

    user_list = ["狗子","二蛋","沙雕","alex"] 
    result1 = "alex" in user_list
    result2 = "alex" not in user_list
    print(result1)
    print(result1)
    # 输出结果:
    True
    Fales
    
    user_list = ["狗子","二蛋","沙雕","alex"] 
    if "alex" in user_list:
        print("在,把他删除")
        user_list.remove("alex")
    else:
        print("不在")
    
    text = input("请输入文本内容:") 
    forbidden_list = ["草","欧美","日韩"]
    for item in forbidden_list:
        text = text.replace(item,"**")
    print(text)
    # 通过for in 循环,实现敏感词替换
    

    注意:列表检查元素是否存在时,是采用逐一比较的方式,效率会比较低。

  4. 长度

    user_list = ["范德彪","刘华强","尼古拉斯赵四"]
    print( len(user_list) )
    # 输出结果:3
    
  5. 索引

    # 读
    user_list = ["范德彪","刘华强","尼古拉斯赵四"]
    print( user_list[0] )		# "范德彪"
    print( user_list[2] )		# "尼古拉斯赵四"
    print( user_list[3] ) 		# 索引超出列表范围,会报错
    
    # 改
    user_list = ["范德彪","刘华强","尼古拉斯赵四"]
    user_list[0] = "轩小陌"
    print(user_list) 
    # 输出结果:
    ["轩小陌","刘华强",'尼古拉斯赵四']
    
    # 删
    user_list = ["范德彪","刘华强","尼古拉斯赵四"]
    del user_list[1]
    user_list.remove("刘华强")
    ele = user_list.pop(1)
    

    注意:

    • 超出索引范围会报错。
    • 由于字符串是不可变类型,所以他只有索引读的功能,而列表可以进行读、改、删。
  6. 切片

    # 读
    user_list = ["范德彪","刘华强","尼古拉斯赵四"]
    print( user_list[0:2] ) 
    print( user_list[1:] )
    print( user_list[:-1] )
    # 输出结果:
    ["范德彪","刘华强"]
    ["刘华强","尼古拉斯赵四"]
    ["范德彪","刘华强"]
    
    # 改
    user_list = ["范德彪", "刘华强", "尼古拉斯赵四"]
    user_list[0:2] = [11, 22, 33, 44]
    print(user_list) 
    # 输出结果:[11, 22, 33, 44, '尼古拉斯赵四']
    
    user_list = ["范德彪", "刘华强", "尼古拉斯赵四"]
    user_list[2:] = [11, 22, 33, 44]
    print(user_list) 
    # 输出结果:['范德彪', '刘华强', 11, 22, 33, 44]
    
    user_list = ["范德彪", "刘华强", "尼古拉斯赵四"]
    user_list[10000:] = [11, 22, 33, 44] 
    # 索引大于列表范围进行切片,会默认加到最后
    print(user_list) 
    # 输出结果:['范德彪', '刘华强', "尼古拉斯赵四", 11, 22, 33, 44]
    
    user_list = ["范德彪", "刘华强", "尼古拉斯赵四"]
    user_list[-10000:1] = [11, 22, 33, 44]
    # 索引开始值为负数,相当于从0开始
    print(user_list) 
    # 输出结果:[11, 22, 33, 44, "刘华强", "尼古拉斯赵四"]
    
    # 删
    user_list = ["范德彪", "刘华强", '尼古拉斯赵四']
    del user_list[1:]
    print(user_list) 
    # 输出结果:["范德彪"]
    
  7. 步长

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

    user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
    for item in user_list:
    	print(item)
    
    user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
    for index in range( len(user_list) ):
        item = user_index[index]
        print(item)
    

    注意:如需要循环的过程中对数据进行删除,正确的方式是从后往前循环。

    # 错误方式:
    user_list = ["刘的话", "范德彪", "刘华强", '刘尼古拉斯赵四', "宋小宝", "刘能"]
    for item in user_list:
        if item.startswith("刘"):
            user_list.remove(item)
    print(user_list)
    # 输出结果:
    ['范德彪', '刘尼古拉斯赵四', '宋小宝']
    
    # 正确方式:
    user_list = ["刘的话", "范德彪", "刘华强", '刘尼古拉斯赵四', "宋小宝", "刘能"]
    for index in range(len(user_list) - 1, -1, -1):
        item = user_list[index]
        if item.startswith("刘"):
            user_list.remove(item)
    print(user_list)
    # 输出结果:
    ['范德彪', '宋小宝']
    

1.4 转换

  • int 、bool 无法转换成列表

  • str 可转换成列表(不常用)

    name = "轩小陌"
    data = list(name)  
    print(data)
    # 输出结果:["轩","小","陌"]
    
  • 元组、集合可转换成列表(比较常用)

    # 元组转列表
    v1 = ( 11, 22, 33, 44 ) 	
    vv1 = list(v1)
    print(vv1)
    # 输出结果:[ 11, 22, 33, 44 ]
    
    # 集合转列表
    v2 = {"alex","eric","dsb"} 
    vv2 = list(v2) 
    print(vv2)
    # 输出结果:["alex","eric","dsb"]
    

1.5. 其他

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

data = [ "谢广坤", ["海燕","赵本山"], True, [11, 22, [999,123], 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) 	
# 输出结果:[ "谢广坤",["海燕","赵本山"],True,[11,22,33,44],"宋小宝",666]

data[1].append("谢大脚")
print(data) 	
# 输出结果:[ "谢广坤",["海燕","赵本山","谢大脚"],True,[11,22,33,44],"宋小宝",666 ]

del data[-2]
print(data) 
# 输出结果:[ "谢广坤",["海燕","赵本山","谢大脚"],True,[11,22,33,44],666 ]

data[-2][1] = "alex"
print(data) 
# 输出结果:[ "谢广坤",["海燕","赵本山","谢大脚"],True,[11,"alex",33,44],666 ]

data[1][0:2] = [999,666]
print(data) 
# 输出结果:[ "谢广坤",[999,666,"谢大脚"],True,[11,"alex",33,44],666 ]
# 通过while循环创建用户列表,用户列表形如:[["user1","pwd1"],["user2","pwd2"],...]
user_list = []
while True:
    user = input("请输入用户名(Q退出):")			# "alex"、"eric"
    if user == "Q":
        break
    pwd = input("请输入密码:")			 # "123"、"666"
    data = [user, pwd]
    user_list.append(data)
print(user_list)
# 输出结果:
 [["alex","123"],["eric","666"]]

1.6 列表作业

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

    li = ["alex", "WuSir", "ritian", "barry", "轩小陌"]
    
    • 计算列表的长度并输出

      print(len(li))
      
    • 列表中追加元素"seven",并输出添加后的列表

      print(li.append('seven'))
      
    • 请在列表的第1个索引位置插入元素"Tony",并输出添加后的列表

      print(li.insert(1,'Tony'))
      
    • 请修改列表第2个索引位置的元素为"Kelly",并输出修改后的列表

      li[2] = 'Kelly'
      print(li)
      
    • 请将列表的第3个位置的值改成 “妖怪”,并输出修改后的列表

      li[3] = '妖怪'
      print(li)
      
    • 请将列表 data=[1,"a",3,4,"heart"] 的每一个元素追加到列表 li 中,并输出添加后的列表

      print(li.extend(data))
      
    • 请将字符串 s = "qwert"的每一个元素到列表 li 中。

      li.extend(s)
      
    • 请删除列表中的元素"barry",并输出添加后的列表

      li.remove('barry')
      print(li)
      
    • 请删除列表中的第2个元素,并输出删除元素后的列表

      li.pop(1)
      print(li)
      
    • 请删除列表中的第2至第4个元素,并输出删除元素后的列表

      del li[1:4]
      print(li)
      
  2. 写代码,有如下列表,利用切片实现每一个功能

    li = [1, 3, 2, "a", 4, "b", 5,"c"]
    
    • 通过对li列表的切片形成新的列表 [1,3,2]

      li = li[:3]
      
    • 通过对li列表的切片形成新的列表 [“a”,4,“b”]

      li = li[3:6]
      
    • 通过对li列表的切片形成新的列表 [1,2,4,5]

      li = li[::2]
      
    • 通过对li列表的切片形成新的列表 [3,“a”,“b”]

      li = li[1:-1:2]
      
    • 通过对li列表的切片形成新的列表 [3,“a”,“b”,“c”]

      li = li[1::2]
      
    • 通过对li列表的切片形成新的列表 [“c”]

      li = li[-1]
      
    • 通过对li列表的切片形成新的列表 [“b”,“a”,3]

      li = li[5::-2]
      
  3. 写代码,有如下列表,按照要求实现每一个功能。

    lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
    
    • 将列表lis中的第2个索引位置的值变成大写,并打印列表

      lis[2] = lis[2].upper()
      print(lis)
      
    • 将列表中的数字3变成字符串"100"

      lis[1] = '100'
      lis[3][2][1][1] = '100'
      print(lis)
      
    • 将列表中的字符串"tt"变成数字 101

      lis[3][2][1][0] = 101
      print(lis)
      
    • 在 "qwe"前面插入字符串:“火车头”

      lis[3].insert(0,"火车头")
      
  4. 请用代码实现循环输出元素和值:users = [“轩小陌”,“景女神”,“肖大侠”] ,如:

    0 轩小陌
    1 景女神
    2 肖大侠
    # 请补充代码
    users = ["轩小陌","景女神","肖大侠"] 
    for index in range(len(users)):
        print(index, users[i])
    
  5. 请用代码实现循环输出元素和值:users = [“轩小陌”,“景女神”,“肖大侠”] ,如:

    1 轩小陌
    2 景女神
    3 肖大侠
    # 请补充代码:
    users = ["轩小陌","景女神","肖大侠"] 
    for index in range(len(users)):
        print(index+1, users[index])
    
  6. 写代码实现以下功能

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

      0,汽车
      1,飞机
      2,火箭
      # 请补充代码:
      goods = ['汽车','飞机','火箭']
      print("可供选择的商品:)
      for index in range(len(goods)):
          print(index, goods[index])
      
    • 用户输入索引后,将指定商品的内容拼接打印,如:用户输入0,则打印 您选择的商品是汽车。

      index = input("请输入商品编号:")
      print("您选择的商品是:{}".format(goods[int(index)]))
      
  7. 利用for循环和range 找出 0 ~ 50 以内能被3整除的数,并追加到一个列表。

    lis = []
    for i in range(51):
        if i % 3 == 0:
            lis.append(i)
    print(lis)
    
  8. 利用for循环和range 找出 0 ~ 50 以内能被3整除的数,并插入到列表的第0个索引位置,最终结果如下:[48,45,42…]

    lis = []
    for i in range(51):
        if i % 3 == 0:
            lis.insert(0,i)
    print(lis)
    
  9. 查找列表li中的元素,移除每个元素的空格,并找出以"a"开头,并添加到一个新列表中,最后循环打印这个新列表。

    li = ["alexC", "AbC ", "egon", " riTiAn", "XuanSir", "  aqc"]
    # 请补充代码:
    new_li = []
    for item in li:
        item = item.strip()
        if item.startswith('a'):
            new_li.append(item)
    print(new_li)
    
  10. 将以下车牌中所有 的车牌搞到一个列表中,并输出京牌车辆的数量。

    data = ["京1231", "冀8899", "京166631", "晋989"]
    # 请补充代码:
    jing_data = []
    count = 0
    for item in data:
        if '京' in item:
            jing_data.append(item)
            count += 1
    print(jing_data)
    print(count)
    

2.元组

列表(list),是一个有序可变的容器,在里面可以存放多个不同类型的元素。

元组(tuple),是一个有序不可变的容器,在里面可以存放多个不同类型的元素。

如何体现不可变呢?
元组中的元素不可修改,但元组可以增加元素

2.1 定义

v1 = (11,22,33)
v2 = ("李杰","Alex")
v3 = (True,123,"Alex",[11,22,33,44])

# 建议:在元组的最后多加一个',' 如:
v2 = ("李杰","Alex",)
d1 = (1)  # 1
d2 = (1,) # (1,)

d3 = (1,2)
d4 = (1,2)

注意:建议在元组的最后多加一个 " , ",用于标识它是一个元组。原因:如果元组中仅有一个整型元素,不加 " , " 的话,python解释器会默认为一个整型处理:

比较 v1 = (1) 和 v2 = 1 和 v3 = (1,) 有什么区别?	# v1 = v2 = 1 , v3才是元组
比较 v1 = ( (1),(2),(3) ) 和 v2 = ( (1,) , (2,) , (3,),) 有什么区别?  # v1 = (1,2,3)

2.2 独有功能

2.3 公共功能

  1. 相加,两个列表相加获取生成一个新的列表。

    data = ("赵四","刘能") + ("宋晓峰","范德彪")
    print(data) 
    # 输出结果:("赵四","刘能","宋晓峰","范德彪")
    
  2. 相乘,列表*整型 将列表中的元素再创建N份并生成一个新的列表。

    data = ("赵四","刘能") * 2
    print(data) 
    # 输出结果:("赵四","刘能","赵四","刘能")
    
  3. 获取长度

    user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
    print( len(user_list) )
    # 输出结果:3
    
  4. 索引

    user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
    print( user_list[0] )
    print( user_list[2] )
    print( user_list[3] )
    # 输出结果:
    "范德彪"
    '尼古拉斯赵四'
    报错
    
  5. 切片

    user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
    print( user_list[0:2] )
    print( user_list[1:] )
    print( user_list[:-1] )
    # 输出结果:
    ('范德彪', '刘华强',)
    ('刘华强', '尼古拉斯赵四',)
    ('范德彪', '刘华强',)
    
  6. 步长

    user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
    print( user_list[1:4:2] )
    print( user_list[0::2] )
    print( user_list[1::2] )
    print( user_list[4:1:-1] )
    # 输出结果:
    ('刘华强', '宋小宝',)
    ('范德彪', '尼古拉斯赵四', '刘能',)
    ('刘华强', '宋小宝',)
    ('刘能', '宋小宝', '尼古拉斯赵四',)
    
    # 注意:字符串和元组由于其不可变的属性,所以是不能像列表一样使用reverse()进行翻转的,只能通过索引加步长或者循环的方式实现翻转,并生成新的字符串和元组
    user_tuple = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
    data = user_tuple[::-1]
    
    user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
    user_list.reverse()
    
    print(user_tuple)
    print(data)
    print(user_list)
    # 输出结果:
    ('范德彪', '刘华强', '尼古拉斯赵四', '宋小宝', '刘能',)
    ('刘能', '宋小宝', '尼古拉斯赵四', '刘华强', '范德彪',)
    ['刘能', '宋小宝', '尼古拉斯赵四', '刘华强', '范德彪']
    
  7. for循环

    user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能",)
    for item in user_list:
    	print(item)
    

    目前:只有 str、list、tuple 可以被for循环。 “xxx” [11,22,33] (111,22,33)

    user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
    for index in range(len(user_list)):
        item = user_list[index]
        print(item)
    

2.4 转换

其他类型转换为元组,使用tuple(其他类型),目前只有字符串和列表可以转换为元组。

data = tuple(其他)
name = "轩小陌"
data = tuple(name)
print(data) 
# 输出结果:("轩","小","陌")
name = ["轩小陌",18,"python"]
data = tuple(name)
print(data) 
# 输出结果:("轩小陌",18,"python")

2.5 其他

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

tu = ( '今天小明不在家', '红红和芳芳聊天', ('大虎问小王今年几岁','爸爸每天辛苦地赚钱'), )
tu1 = tu[0]
tu2 = tu[1]
tu3 = tu[2][0]
tu4 = tu[2][1]
tu5 = tu[2][1][3]
print(tu1) 
print(tu2)
print(tu3) 
print(tu4) 
print(tu5) 
# 输出结果:
今天小明不在家
红红和芳芳聊天
大虎问小王今年几岁
爸爸每天辛苦地赚钱
小

练习题1:

li = ["alex", [11,22,(88,99,100,),33],  "XuanSir",  ("ritian", "barry",),  "wenzhou"]
# 索引: 0               1                 2                3                4

# 1.请将 "XuanSir" 修改成 "轩小陌"
li[2] = "轩小陌"

# 2.请将 ("ritian", "barry",) 修改为 ['天','地']
li[3] = ['天','地']

# 3.请将 88 修改为 87
88在元组中,无法修改

# 4.请将 "wenzhou" 删除,然后再在列表第0个索引位置插入 "周周"
li.remove("wenzhou")
li.insert(0,"周周")

练习题2:

data = ("123", 666, [11, 22, 33], ("alex", "李杰", [999, 666, (5, 6, 7)]), )

# 1.将 “123” 替换成 9
"123"在元组中,无法修改

# 2.将 [11,22,33] 换成 "轩小陌"    
[11,22,33]在元组中,无法修改

# 3.将 11 换成 99
data[2][0] = 99

# 4.在列表 [11,22,33] 追加一个44
data[2].append(44)

练习题3:

# 动态的创建用户并添加到用户列表中
user_list = []
while True:
    user = input("请输入用户名:")			# "alex"、"admin"、"eric"
    if user == "Q":
        break
    pwd = input("请输入密码:")			 # "132"、"123"、"123"
    item = (user,pwd,)
    user_list.append(item)
print(user_list)
# 输出结果:[ ("alex","132"),("admin","123"),("eric","123") ]
    
# 实现:用户登录案例
print("登录程序")
username = input("请输入用户名:")
password = input("请输入密码:")
is_success = False
for item in user_list:
    if username == item[0] and password == item[1]:
        is_success = True
        break
if is_success:
    print("登录成功")
else:
    print("登录失败")

今日总结

  1. 概述
    • 列表,以后写程序会用的非常多,要多写多练。
    • 元组,以后写程序用的不是很多,主要以了解其特殊属性为主。
  2. 列表和元组的区别。
  3. 可变类型和不可变类型。
  4. 列表独有功能 & 公共功能(不用死记硬背,多加练习,熟能生巧)。
  5. 列表和元组等数据的嵌套。
  6. 元组中 (1) 和 (1,) 的区别。
  7. 元组的元素不能被替换,但元组的元素如果是可变类型,可变类型内部是可以修改的。

今日作业

  1. 以下哪些数据类型转换为布尔值为False

    1				# True
    ""				# False
    -19				# True
    []				# False
    [11,22]			 # True
    (1)				 # True
    (1,2,3)			 # True
    ()				# False
    
  2. 运算符操作

    v1 = [] or "alex"				# "alex"
    v2 = [11,22] and (1,2,)			# (1,2,)
    
  3. 比较:a = [1,2,3]b = [(1),(2),(3) ] 以及 c = [(1,),(2,),(3,) ] 的区别?

    a = [1,2,3] 					# 是一个列表,列表中的每个元素都是整型
    b = [(1),(2),(3)] = [1,2,3]   	  # 是一个跟a一样的列表
    c = [(1,),(2,),(3,)] 		 	 # 是一个列表,列表中的每个元素都是一个元组
    
  4. 将字符串text = "xuanxiaomo|alex|eric"根据 | 分割为列表,然后列表转换为元组类型。

    text_list = text.split('|')
    text_tuple = tuple(text_list)
    
  5. 根据如下规则创建一副扑克牌(排除大小王)。

    # 花色列表
    color_list = ["红桃","黑桃","方片","梅花"]
    # 牌值
    num_list = []
    for num in range(1,14):
        num_list.append(num)
    result = []
    # 请根据以上的花色和牌值创建一副扑克牌(排除大小王)
    # 最终result的结果格式为: [ ("红桃",1), ("红桃",2) ... ]
    # 请补充代码:
    for color in color_list:
    	for num in num_list:
        	card = (color,num,)
            result.append(card)
    print(result)
    
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值