首页 > 其他分享 >day 06-1 数据类型(列表)

day 06-1 数据类型(列表)

时间:2024-03-13 15:12:33浏览次数:20  
标签:06 name 数据类型 list 列表 索引 user print day

day 06 列表

常见的数据类型

  • int, 整数类型(整型)
  • bool, 布尔类型
  • str, 字符串类型
  • list, 列表类型:用于储存一些数据的容器(有序&可修改),动态的容器
  • tuple, 元组类型:用于储存一些数据的容器(有序&不可修改),固定的容器
  • dict, 字典类型
  • set ,几何类型
  • float, 浮点类型(浮点型)

1 列表

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

1.1 定义

content_list = ["今天","昨天","明天"] # 可以是多个字符串
number_list = [99,77,66,55] # 可以是多个整型
data_list = [1,True,False,"今天"] # 可以是多种类型

user_list = []
user_list.append("今天")
user_list.append(123)
user_list.append(True)
print (user_list) # ['今天', 123, True]

不可变类型:字符串,整型,布尔类型(已经是最小,无法修改)

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

1.2 独有功能

python中为所有的列表类型的数据提供了一批独有的功能

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

  • 字符串,不可变,即:创建好以后内部无法修改(独有功能都是创建一份新的数据)
name = "linzai"
data = name.upper()
print(name) # linzai
print(data) # LINZAI
  • 列表,可变,即:创建好以后内部元素可以修改(独有功能基本上都是直接操作列表内部,不会创建一份新的数据)
user_list = ["today", "yesterday"]
user_list.append("tomorrow") # list.append() 方法一次只能添加一个元素到列表的末尾
print(user_list)  # ['today', 'yesterday', 'tomorrow']

列表中独有功能如下;

1.追加(.append),在远列表中尾部追加值

data_list = []
v1 = input("请输入您的名字:") # lll
data_list.append(v1)

v2 = input("请输入您的名字:") # kk
data_list.append(v2)

print(data_list) # ['lll', 'kk']
# 案例1
user_list = []
while True :
    user = input("请输入您的名字:")
    if user == "Q":
        break
    user_list.append(user)
print (user_list)
# 案例2
welcome = "欢迎使用linzai游戏".center(30, "*")
print(welcome)

user_count = 0
while True:
    count = input("请输入参加人数:")
    if count.isdecimal():  # 判断是否是数字
        user_count = int(count) # 转换成整型
        break
    else:
        print("输入格式错误,请输入数字")

messages = "{}人参加游戏".format(user_count)
print(messages)

user_name_list = []
for i in range(1, user_count + 1):
    tip = "请输入玩家姓名({}/{}):".format(i, user_count)
    name = input(tip)
    user_name_list.append(name)
print(user_name_list)

2.批量追加(.extend),在一个列表中的元素逐一添加另外一个列表

tool = ["今天","明天","昨天"]
tool.extend(['today', 'yesterday', 'tomorrow']) # .extend() 方法的作用是将传入的可迭代对象中的所有元素逐一添加到现有列表中,扩充列表内容,而不是像 .append() 方法那样只添加单个元素
print (tool) # ['今天', '明天', '昨天', 'today', 'yesterday', 'tomorrow']

tools = ["今天","明天","昨天"]
weapon = ['today', 'yesterday', 'tomorrow'] 
tools.extend(weapon) #将weapons的内容加到tools,改变的是tools,weapons并没有改变
print (tools) # ['今天', '明天', '昨天', 'today', 'yesterday', 'tomorrow']

tools = ["今天","明天","昨天"]
weapon = ['today', 'yesterday', 'tomorrow']
weapon.extend(tools) 
print (tools) # ['今天', '明天', '昨天']
print (weapon) # ['today', 'yesterday', 'tomorrow', '今天', '明天', '昨天']
# 等价于(扩展)
weapon = ['today', 'yesterday', 'tomorrow']
for item in weapon:
    print (item)
# today
# yesterday
# tomorrow


tools = ["今天", "明天", "昨天"]
weapon = ['today', 'yesterday', 'tomorrow']
for item in weapon:
    tools.append(item)
print(tools)  # ['今天', '明天', '昨天', 'today', 'yesterday', 'tomorrow']

3.插入(insert),在原列别的指定索引位置插入值

user_list = ["昨天","今天","明天"]
user_list.insert(0,"yesterday") # .insert() 是列表的一个方法,用于在列表的特定位置插入新的元素
user_list.insert(2,"today") # # 参数 2 指定了插入的位置,即在索引为 2 的位置前插入元素(在 Python 中,索引是从 0 开始计数的,因此索引 2 实际上是指第三个位置)。 "today" 是要插入列表的新元素,它是一个字符串。
print (user_list) # ['yesterday', '昨天', 'today', '今天', '明天']


# 案例
name_list = []
while True:
    name = input("请输入您的姓名(q/Q退出):")
    if name.upper() == "Q":
        break
    elif name.startswith("张"):
        name_list.insert(0, name)
    else:
        name_list.append(name)
print(name_list)

注意:

索引过大:如果插入的索引大于列表当前的最大索引(即列表长度减一),那么新元素将会被添加到列表的末尾。例如,如果列表长度为5,你尝试在索引6的位置插入元素,实际上该元素会被插入到索引5的位置,成为列表的最后一个元素。

索引过小:如果插入的索引小于0,大多数编程语言(包括Python)会将其视为有效索引,并将新元素插入到列表的开头,即索引0的位置之前。在Python中,这相当于使用负索引,其中 -1 表示列表的最后一个元素,-2 表示倒数第二个元素,依此类推。但直接插入负数索引并不是常规做法,通常我们会直接用 insert(0, item) 来在列表开头插入元素。

  1. 在原列表中根据值删除(从左到右找到第一个删除),【慎用,里面没有就会报错】
user_list = ["刘备","关羽","张飞","关羽"]
user_list.remove("关羽") # 只会删除列表中第一个遇到的与 "关羽" 相匹配的元素
print (user_list) # ['刘备', '张飞', '关羽']

# 如果想做的判断里不报错,做if判断
user_list = ["刘备","关羽","张飞","关羽"]
if "赵云" in user_list:
    user_list.remove("赵云") # ['刘备', '关羽', '张飞', '关羽']
print (user_list) # ['刘备', '张飞', '关羽']

# remove只能删除第一个,如果想全部删除,做一个循环
user_list = ["刘备","关羽","张飞","关羽"]
while True :
    if "关羽" in user_list:
        user_list.remove("关羽")
    else :
        break
print (user_list) # ['刘备', '张飞']
# 案例 自动抽奖程序
import random

data_list = ["特等奖", "一等奖", "二等奖", "二等奖", "三等奖", "三等奖", "三等奖"]

while data_list:
    name = input("自动抽奖环节,请输入您的姓名:")
    value = random.choice(data_list) # 随机从data_list抽取一个值出来
    print("恭喜{},获得{}".format(name,value))
    data_list.remove(value)

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

user_list = ["张译","冯绍峰","赵又廷","林更新","刘烨","陈道明","黄轩","秦昊","黄晓明"]

user_list.pop(1) # 从列表中移除位于指定索引位置的元素
print (user_list) # ['张译', '赵又廷', '林更新', '刘烨', '陈道明', '黄轩', '秦昊', '黄晓明']

user_list.pop() # 如果括号中什么都没有标注,移除并返回 user_list 中的最后一个元素
print (user_list) # ['张译', '赵又廷', '林更新', '刘烨', '陈道明', '黄轩', '秦昊']

content = user_list.pop(1)
print (content) # 赵又廷
print (user_list) # ['张译', '林更新', '刘烨', '陈道明', '黄轩', '秦昊']
user_queue = []

while True:
    name = input("请输入购买火车票人的姓名(Q退出):") # "张译","冯绍峰","赵又廷","林更新","刘烨","陈道明"
    if name == "Q":
        break
    user_queue.append(name)

ticker_count = 3
for i in range(ticker_count):
    username = user_queue.pop(0)
    message = "恭喜{},购买火车票成功".format(username)
    print(message)

faild_user = "、".join(user_queue)
faild_message = "非常抱歉,以下几位用用户请选择其他出行方式,名单:{}".format(faild_user)
print(faild_message)
# 恭喜张译,购买火车票成功
# 恭喜冯绍峰,购买火车票成功
# 恭喜赵又廷,购买火车票成功
# 非常抱歉,以下几位用用户请选择其他出行方式,名单:林更新、林更刘烨、刘烨、陈道明

6.清空原列表

user_name = ["张译","冯绍峰","赵又廷","林更新","刘烨","陈道明"]
user_name.clear() # clear() 方法会移除列表中所有的元素,使得列表变为空
print (user_name) # []

7.根据值获取索引(慎用,找不到报错)

user_name = ["张译","冯绍峰","赵又廷","林更新","刘烨","陈道明"]
name = user_name.index("赵又廷")  # .index它的作用是查找列表中指定元素的索引位置。
print (name) # 2

# 为了避免报错,可以先进行判断,是否在列表中
user_name = ["张译","冯绍峰","赵又廷","林更新","刘烨","陈道明"]
if "赵又廷" in user_name:
    name = user_name.index("赵又廷")  # .index它的作用是查找列表中指定元素的索引位置。
    print (name) # 2
else :
    print ("不存在该名字")

8.列表元素排序

# 数字排序
number = [11, 22, 33, 5, 6, 24, 8, 99]
print(number) # [11, 22, 33, 5, 6, 24, 8, 99]

number.sort() # 从小到大排序
print(number) # [5, 6, 8, 11, 22, 24, 33, 99]

number.sort(reverse=True) # 从大到小排序
print(number) # [99, 33, 24, 22, 11, 8, 6, 5]
# 字符串排序
user_name = ["张译","冯绍峰","赵又廷","林更新","刘烨","1","aa"]
user_name.sort() # 字符串排序,每个字符串默认转化成Unicode编码然后进行排序
print (user_name) # ['1', 'aa', '冯绍峰', '刘烨', '张译', '林更新', '赵又廷']

注意:排序时内部元素无法进行比较时,程序会报错(尽量数据类型统一)。

9.原列表的反转

user_name = ["张译","冯绍峰","赵又廷","林更新","刘烨","1","aa"]
user_name.reverse()  # .reverse()表示列表的反转
print (user_name) # ['aa', '1', '刘烨', '林更新', '赵又廷', '冯绍峰', '张译']

标签:06,name,数据类型,list,列表,索引,user,print,day
From: https://www.cnblogs.com/linzaidehouhuayuan/p/18070690

相关文章

  • CVE-2023-48906
    github:https://github.com/bluekitchen/btstack/issues/546Inthebtstacksourcecode,wecanfindaninterestingpieceofcode.charchar_for_nibble(intnibble){staticconstchar*char_to_nibble="0123456789ABCDEF";if(nibble<1......
  • 【VINKA原厂技术支持】电源供电系列高稳定性抗电压波动 6按键/通道触摸触控芯片VK3606
    概述 VK3606D具有6个触摸按键,可用来检测外部触摸按键上人手的触摸动作。该芯片具有较高的集成度,仅需极少的外部组件便可实现触摸按键的检测。提供了6路1对1直接输出低电平有效。最长输出时间10S。芯片内部采用特殊的集成电路,具有高电源电压抑制比,可减少按键检测错误的发生,此特......
  • day4
     会有一个优先队列,把他加进去了,他会自己排序,从小到大依次排列判断下当前队列有没有满,如果满了你又比队列中最小值还小那就continue,没必要插入了如果比最小值大,那就可以插入,他会自动比较大小直接heappop就可以排除最小值最后返回优先队列中的最小值即可     ......
  • MBR4060DC-ASEMI光伏专用二极管MBR4060DC
    编辑:llMBR4060DC-ASEMI光伏专用二极管MBR4060DC型号:MBR4060DC品牌:ASEMI封装:TO-263最大平均正向电流(IF):40A最大循环峰值反向电压(VRRM):60V最大正向电压(VF):V工作温度:-65°C~150°C反向恢复时间:ns重量:1.38克芯片个数:4芯片尺寸:130mil正向浪涌电流(IFMS):300AMBR4060DC特性:耐压......
  • 06-TDesign组件库
    TDesign具有统一的价值观,一致的设计语言和视觉风格,帮助用户形成连续、统一的体验认知。在此基础上,TDesign提供了开箱即用的UI组件库、设计指南和相关设计资产,以优雅高效的方式将设计和研发从重复劳动中解放出来,同时方便大家在TDesign的基础上扩展,更好的的贴近业务需求。......
  • Linux软件高级编程-网络--TCP通信--day14
    TCP包头:1.序号:发送端发送数据包的编号2.确认号:已经确认接收到的数据的编号(只有当ACK为1时,确认号才有用)TCP为什么安全可靠:1.在通信前建立三次握手连接  SYN    SYN+ACK    ACK 2.在通信过程中通过序列号和确认号保障数据传输的完整性  本次......
  • 实验1 C语言开发环境使用和数据类型、运算符、表达式
    1#include<stdio.h>2intmain()3{4printf("o\n");5printf("<H>\n");6printf("II\n");78return0;9}#include<stdio.h>intmain(){printf("oo\n"......
  • Python数学建模-2.2Python基本数据类型
    各位小伙伴大家好,今天开始学习司守奎老师的《数学建模算法与应用》啦,我也会边学习边与大家分享书中的内容,希望与大家共同进步哦Python中的基本数据类型主要包括以下几种:数字(Numbers)整型(int):正或负整数,没有限制大小。例如:100,-8080,0。浮点型(float):浮点数,即带有小数点的数字。......
  • 实验1 C语言开发环境使用和数据类型、运算符、表达式
    task1点击查看代码#include<stdio.h>intmain(){printf("o\n"); printf("<H>\n"); printf("II\n"); printf("o\n"); printf("<H>\n"); printf("II\n"); system("......
  • C语言学习笔记day3
    1.逗号运算符           逗号运算符连接的表达式,从左至右依次执行,最后一个逗号后面的表达式结果作为   整体的逗号表达式的结果2.sizeof运算符        sizeof(数据类型/变量名)        获得一个数据类型或者变量在内存中所占的......