列表深度学习及练习题--Python

14.列表(list)

定义:有序且可变的容器

user_list=[1,True,"希岛爱理"]
data_list=[]
​
data_list.append["波多野结衣"]
​
data_list.append["桥本有菜"]
​
print(data_list) # ["波多野结衣",桥本有菜"]

14.1列表独有功能

1.append[]

内容可变 追加

data_list=[]
​
data_list.append["波多野结衣"]
​
data_list.append["桥本有菜"]
​
print(data_list) # ["波多野结衣",桥本有菜"]
2.extend([ ])

批量追加

data_list = []
​
data_list.append("波多野结衣")
​
data_list.extend(["桥本有菜", "大桥未久"])  # 批量追加
​
print(data_list)  # ["波多野结衣","桥本有菜","大桥未久"]
3.insert()

指定索引位置插入值

data_list = ["波多野结衣", "桥本有菜", "大桥未久"]
​
data_list.insert(0, "dxl") #0位置插入dxl
​
print(data_list)

案例

user_name = []
while True:
    tips = input("请输入您的姓名:,按Q/q可退出操作")
    if tips.upper() == "Q":
        break
    if tips == "杜":
        user_name.insert(0, tips)
    else:
        user_name.append(tips)
print(user_name)
4.remove()

删除原列表中的某一个值,若该值不存在会报错 则应该做判断再删除

data_list = ["dxl", "ygj", "csy"]
if "dxl" in data_list:
    data_list.remove("dxl")
print(data_list)

也可删除全部要删除的内容

data_list = ["dxl", "ygj", "csy", "dxl"]
while True:
    if "dxl" in data_list:
        data_list.remove("dxl")
    else:
        break
print(data_list)

案例

# 自动抽奖
import random
​
value_list = ["二手充气女友", "iphone15pm", "洗浴年卡", "大宝剑"]
while value_list:
    name = input("请输入您的姓名:")
    value = random.choice(value_list)
    print(f"恭喜{name}抽中{value}")
    value_list.remove(value)
5.pop()

根据索引删除

value_list = ["二手充气女友", "iphone15pm", "洗浴年卡", "大宝剑"]
​
value_list.pop(0) # 删除第0个位置对应的内容
value_list.pop() # 不加索引默认删除最后一个
value=value_list.pop(0) # 获取删除值并赋值给value

案例

# 排队买火车票
user_name = []
while True:
    name = input("请输入你的名字(Q/q)退出:")
    if name.upper() == "Q":
        break
    else:
        user_name.append(name)
ticket_count = 3  # 0 1 2
for i in range(ticket_count):
    username = user_name.pop(0)
    print(f"恭喜{username}已经买到车票")
faild_user = ",".join(user_name)
print(f"非常抱歉,票已售完,以下用户没有购买成功{faild_user}")
6.clear()

清空列表

value_list = ["二手充气女友", "iphone15pm", "洗浴年卡", "大宝剑"]
​
value_list.clear()
print(value_list)
7.index()

根据值获取索引【找不到会报错,慎用】

value_list = ["二手充气女友", "iphone15pm", "洗浴年卡", "大宝剑"]
if "大宝剑" in value_list:
    index = value_list.index("大宝剑")
    print(index)
else:
    print("未找到删除目标")
8.sort()

对列表排序

# 数字排序
num_list = [99, 23, 42, 12, 53, 14, 12]
print(num_list)
num_list.sort() # num_list.sort(reverse=True) 从大到小
print(num_list) # 默认从小到大

sort排序原理

字符串会转换成unicode的编码比较后再排序

注意:又有数字又有字符串的时候会报错,没办法进行比较

9.reverse

反转原列表(调个顺序)

value_list = ["二手充气女友", "iphone15pm", "洗浴年卡", "大宝剑"]
value_list.reverse()
print(value_list)

14.2列表公共功能

1.相加
value_list = ["二手充气女友", "iphone15pm", "洗浴年卡", "大宝剑"]
​
data_list = ["波多野结衣", "桥本有菜", "大桥未久"]
​
v1=value_list+data_list
​
print(v1) # ['二手充气女友', 'iphone15pm', '洗浴年卡', '大宝剑', '波多野结衣', '桥本有菜', '大桥未久']
2.相乘
data_list = ["波多野结衣", "桥本有菜", "大桥未久"] * 2
​
print(data_list) # ['波多野结衣', '桥本有菜', '大桥未久', '波多野结衣', '桥本有菜', '大桥未久']
3.运算符in包含
data_list = ["波多野结衣", "桥本有菜", "大桥未久"]
if "大桥未久" in data_list:
    print("可以删除")
    data_list.remove("大桥未久")
else:
    print("目标不在")
print(data_list)
4.获取长度
data_list = ["波多野结衣", "桥本有菜", "大桥未久"]
print(len(data_list))
5.索引

针对一个元素

# 读
user_list = ["范德彪","刘华强",'尼古拉斯赵四']
print( user_list[0] )
print( user_list[2] )
print( user_list[3] ) # 报错
# 改
user_list = ["范德彪","刘华强",'尼古拉斯赵四']
user_list[0] = "123"
print(user_list) # ["123","刘华强",'尼古拉斯赵四']
# 删
user_list = ["范德彪","刘华强",'尼古拉斯赵四']
del user_list[1]
​
user_list.remove("刘华强")
ele = user_list.pop(1) # 此时ele尼古拉斯赵四

注意:超出索引范围会报错。 提示:由于字符串是不可变类型,所以他只有索引读的功能,而列表可以进行 读、改、删

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[3:] = [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]
print(user_list) # 输出 [11, 22, 33, 44, '刘华强', '尼古拉斯赵四']
# 删
user_list = ["范德彪", "刘华强", '尼古拉斯赵四']
del user_list[1:]
print(user_list) # 输出 ['范德彪']
7.步长
user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
#              0        1        2          3       4
print( user_list[1:4:2] )
print( user_list[0::2] )
print( user_list[1::2] )
print( user_list[4:1:-1] )
# 案例:实现列表的翻转
user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
new_data = user_list[::-1]
print(new_data)
​
​
data_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
data_list.reverse()
print(data_list)
​
# 给你一个字符串请实现字符串的翻转?
name = "dxl"
name[::-1]
8.for循环
user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
for item in user_list:
    print(item)
user_list = ["范德彪", "刘华强", "尼古拉斯赵四", "宋小宝", "刘能"]
​
for index in range(len(user_list)):
    item = user_list[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)

例如,如果 user_list = [10, 20, 30, 40, 50] ,那么这个循环会从索引 4 (对应元素 50 )开始,然后是索引 3 (对应元素 40 ),以此类推,直到索引 0 (对应元素 10 )。

9.list()

类型转换

  • int、bool无法转换成列表

  • str

    name = "lotus"
    ​
    data = list(name)  # ["l","o","t","u","s"]
    print(data)
  • 超前

    v1 = (11,22,33,44) # 元组
    vv1 = list(v1)     # 列表 [11,22,33,44]
    ​
    v2 = {"lianhua","eric","dsb"} # 集合
    vv2 = list(v2) # 列表 ["lianhua","eric","dsb"]
10.嵌套

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

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] = "dxl"
print(data) # [ "谢广坤",["海燕","赵本山","谢大脚"],True,[11,"dxl",33,44],666 ]
​
​
data[1][0:2] = [999,666]
print(data) # [ "谢广坤",[999,666,"谢大脚"],True,[11,"dxl",33,44],666 ]

# 创建用户列表
#    用户列表应该长: [ ["dxl","123"],["eric","666"] ]
​
# user_list = [["dxl","123"],["eric","666"],]
# user_list.append(["dxl","123"])
# user_list.append(["eric","666"])
​
​
user_list = []
while True:
    user = input("请输入用户名:")
    pwd = input("请输入密码:")
​
    data = []
    data.append(user)
    data.append(pwd)
    
    user_list.append(data)

user_list = []
while True:
    user = input("请输入用户名(Q退出):")
    if user == "Q":
        break
    pwd = input("请输入密码:")
    data = [user,pwd]
    user_list.append(data)
​
print(user_list)
练习题
  1. 写代码,有如下列表,按照要求实现每一个功能。

    li = ["lianhua", "WuSir", "ritian", "barry", "lotus"]
    • 计算列表的长度并输出

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

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

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

    • li.pop(2)
      li.insert(2, "Kelly")
      print(li)
    • 请将列表的第3个位置的值改成 "妖怪",并输出修改后的列表

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

    • data = [1, "a", 3, 4, "heart"]
      for i in data:
          li.append(i)
      print(li)
    • 请将字符串 s = "qwert"的每一个元素到列表 li 中。

    • s = "qwert"
      for i in s:
          li.append(i)
      print(li)
    • 请删除列表中的元素"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]

    • print(li[0:3])
    • 通过对li列表的切片形成新的列表 ["a",4,"b"]

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

    • print(li[0:8:2])
    • 通过对li列表的切片形成新的列表 [3,"a","b"]

    • print(li[1:6:2])
    • 通过对li列表的切片形成新的列表 [3,"a","b","c"]

    • print(li[1:8:2])
    • 通过对li列表的切片形成新的列表 ["c"]

    • print(li[7:])
    • 通过对li列表的切片形成新的列表 ["b","a",3]

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

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

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

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

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

    • lis[3][0] = "火车头" + lis[3][0]
      print(lis)
  4. 请用代码实现循环输出元素和值:users = ["lotus、","景女神","肖大侠"] ,如:

    0 lotus
    1 景女神
    2 肖大侠

    答案:

    count = 0
    for i in users:
        print(f"{count} {i}")
        count += 1
  5. 请用代码实现循环输出元素和值:users = ["lotus","景女神","肖大侠"] ,如:

    1 lotus
    2 景女神
    3 肖大侠

    答案:

    count = 1
    for i in users:
        if count < 4:
            print(f"{count} {i}")
            count += 1

  6. 写代码实现以下功能

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

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

    • goods = ["汽车", "飞机", "火箭"]
      choice = input("汽车,飞机,火箭可供您选择 请按照0-2的序号选择您喜欢的货物:")
      xuanze = int(choice)
      if xuanze == 0:
          print(f"您选择的货物是{goods[0]}")
      elif xuanze == 1:
          print(f"您选择的货物是{goods[1]}")
      else:
          print(f"您选择的货物是{goods[2]}")
  7. 利用for循环和range 找出 0 ~ 50 以内能被3整除的数,并追加到一个列表。

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

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

    li = ["lianhuaC", "AbC ", "egon", " riTiAn", "WuSir", "  aqc"]
    new_li = []
    for element in li:
        element = element.strip()  # 移除元素的空格
        if element.startswith("a"):  # 判断是否以 'a' 开头
            new_li.append(element)
    ​
    for item in new_li:
        print(item)
  10. 将以下车牌中所有 的车牌搞到一个列表中,并输出京牌车辆的数量。

    data = ["京1231", "冀8899", "京166631", "晋989"]
    data = ["京1231", "冀8899", "京166631", "晋989"]
    car = []
    count = 0
    for i in data:
        if i.startswith("京"):
            car.append(i)
            count += 1
    print(f"京牌车的数量是{count}")

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值