Python 重要数据类型

目录

列表

序列操作

列表内置方法

列表推到式

字典

声明字典

字典基本操作

列表内置方法

字典进阶使用

字典生成式

附录


列表

在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。列表就是这样的一个数据结构。

列表会将所有元素都放在一对中括号[ ]里面,相邻元素之间用逗号,分隔,如下所示:

[element1, element2, element3, ..., elementn]

不同于Cjava等语言的数组,python的列表可以存放不同的,任意的数据类型对象。

l = [123,"yuan",True]
print(l,type(l))

# 注意
a,b = [1,2]
print(a,b)

序列操作

列表是 Python 序列的一种,我们可以使用索引(Index)访问列表中的某个元素(得到的是一个元素的值),也可以使用切片访问列表中的一组元素(得到的是一个新的子列表)。

  • 索引求值
l = [10,11,12,13,14]
print(l[2]) # 12
print(l[-1]) # 14
  • 切片操作
l = [10,11,12,13,14]
print(l[2:5])
print(l[-3:-1])
print(l[:3])
print(l[1:])
print(l[:])
print(l[2:4])
print(l[-3:-1])
print(l[-1:-3])
print(l[-1:-3:-1])
print(l[::2])

1、取出的元素数量为:结束位置 - 开始位置;

2、取出元素不包含结束位置对应的索引,列表最后一个元素使用 list[len(slice)]获取;

3、当缺省开始位置时,表示从连续区域开头到结束位置;

4、当缺省结束位置时,表示从开始位置到整个连续区域末尾;

5、两者同时缺省时,与列表本身等效;

6、step为正,从左向右切,为负从右向左切。

  • 判断成员是否存在

in 关键字检查某元素是否为序列的成员

l = [10,11,12,13,14]
print(20 in l) # False
print(12 in l) # True
  • 相加
l1 = [1,2,3]
l2 = [4,5,6]
print(l1+l2) # [1, 2, 3, 4, 5, 6]
  • 循环列表
for name in ["张三",'李四',"王五"]:
    print(name)
    
for i in range(10): # range函数: range(start,end,step)
    print(i)
    
# 基于for循环从100打印到1  
for i in range(100,0,-1):
    print(i)

列表内置方法

l = [1,2,3]
方法作用示例结果
append()向列表追加元素l.append(4)l:[1, 2, 3, 4]
insert()向列表任意位置添加元素l.insert(0,100)l:[100, 1, 2, 3]
extend()向列表合并一个列表l.extend([4,5,6])l:[1, 2, 3, 4, 5, 6]
pop()根据索引删除列表元素(为空删除最后一个元素)l.pop(1)l:[1, 3]
remove()根据元素值删除列表元素l.remove(1)l:[2, 3]
clear()清空列表元素l.clear()l:[]
sort()排序(升序)l.sort()l:[1,2,3]
reverse()翻转列表l.reverse()l:[3,2,1]
count()元素重复的次数l.count(2)返回值:1
index()查找元素对应索引l.index(2)返回值:1
# 增删改查: [].方法()

# (1) ********************************  增(append,insert,extend)  ****************
l1 = [1, 2, 3]
# append方法:追加一个元素
l1.append(4)
print(l1)  # [1, 2, 3, 4]
# insert(): 插入,即在任意位置添加元素
l1.insert(1, 100)  # 在索引1的位置添加元素100
print(l1)  # [1, 100, 2, 3, 4]
# 扩展一个列表:extend方法
l2 = [20, 21, 22, 23]
# l1.append(l2)
l1.extend(l2)
print(l1)  # [1, 100, 2, 50, 3, 4,[20,21,22,23]]
# 打印列表元素个数python内置方法:
print(len(l1))

# (2) ********************************    删(pop,remove,clear) **********************

l4 = [10, 20, 30, 40, 50]
# 按索引删除:pop,返回删除的元素
# ret = l4.pop(2)
# print(ret)
# print(l4) # [10, 20, 40, 50]
# 按着元素值删除
l4.remove(30)
print(l4) # [10, 20, 40, 50]
# 清空列表
l4.clear()
print(l4) # []

# (3) ********************************  修改(没有内置方法实现修改,只能基于索引赋值) ********

l5 = [10, 20, 30, 40, 50]
#  将索引为1的值改为200
l5[1] = 200
print(l5) # [10, 200, 30, 40, 50]
# 将l5中的40改为400 ,step1:查询40的索引 step2:将索引为i的值改为400
i = l5.index(40) #  3
l5[i] = 400
print(l5) # [10, 20, 30, 400, 50]

# (4) ********************************   查(index,sort) *******************************

l6 = [10, 50, 30, 20,40]
l6.reverse() # 只是翻转 [40, 20, 30, 50, 10]
print(l6) # []
# # 查询某个元素的索引,比如30的索引
# print(l6.index(30)) # 2
# 排序
# l6.sort(reverse=True)
# print(l6) # [50, 40, 30, 20, 10]

列表推到式

列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。

它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以 if 和 for 语句为上下文的表达式运行完成之后产生。

列表推导式的执行顺序:各语句之间是嵌套关系,左边第二个语句是最外层,依次往右进一层,左边第一条语句是最后一层。

[x*y for x in range(1,5) if x > 2 for y in range(1,4) if y < 3]
for x in range(1,5)
    if x > 2
        for y in range(1,4)
            if y < 3
                x*y

字典

字典是Python提供的唯一内建的映射(Mapping Type)数据类型。

声明字典

python使用 { } 创建字典,由于字典中每个元素都包含键(key)和值(value)两部分,因此在创建字典时,键和值之间使用冒号:分隔,相邻元素之间使用逗号,分隔,所有元素放在大括号{ }中。

使用{ }创建字典的语法格式如下:

dictname = {'key':'value1', 'key2':'value2', ...}

1、同一字典中的各个键必须唯一,不能重复。

2、字典是键值对是无序的,但在3.6版本后,字典默认做成有序的了,这是新的版本特征。

字典基本操作

# (1) 查键值
print(book["title"])  # 返回字符串 西游记
print(book["authors"])  # 返回列表 ['rain', 'yuan']

# (2) 添加或修改键值对,注意:如果键存在,则是修改,否则是添加
book["price"] = 299  # 修改键的值
book["publish"] = "北京出版社"  # 添加键值对

# (3) 删除键值对 del 删除命令
print(book)
del book["publish"]
print(book)
del book
print(book)

# (4) 判断键是否存在某字典中
print("price" in book)

# (5) 循环
for key in book:
    print(key,book[key])

列表内置方法

d = {"name":"yuan","age":18}
方法作用示例结果
get()查询字典某键的值, 取不到返回默认值d.get("name",None)"yuan"
setdefault()查询字典某键的值, 取不到给字典设置键值,同时返回设置的值d.setdefault("age",20)18
keys()查询字典中所有的键d.keys()['name','age']
values()查询字典中所有的值d.values()['yuan', 18]
items()查询字典中所有的键和值d.items()[('name','yuan'), ('age', 18)]
pop()删除字典指定的键值对d.pop(‘age’){'name':'yuan'}
popitem()删除字典最后的键值对d.popitem(){'name':'yuan'}
clear()清空字典d.clear(){}
update()更新字典t={"gender":"male","age":20} d.update(t){'name':'yuan', 'age': 20, 'gender': 'male'}

测试代码

dic = {"name": "yuan", "age": 22, "sex": "male"}

# (1)查字典的键的值

print(dic["names"])  # 会报错
name = dic.get("names")
sex = dic.get("sexs", "female")
print(sex)
print(dic.keys())  # 返回值:['name', 'age', 'sex']
print(dic.values())  # 返回值:['yuan', 22, 'male']
print(dic.items())  # [('name', 'yuan'), ('age', 22), ('sex', 'male')]

# setdefault取某键的值,如果能取到,则返回该键的值,如果没有改键,则会设置键值对
print(dic.setdefault("name"))  # get()不会添加键值对 ,setdefault会添加
print(dic.setdefault("height", "180cm"))
print(dic)

# (2)删除键值对 pop popitem

sex = dic.pop("sex")  # male
print(sex)  # male
print(dic)  # {'name': 'yuan', 'age': 22}

dic.popitem()  # 删除最后一个键值对
print(dic)  # {'name': 'yuan'}

dic.clear()  # 删除键值对

# (3) 添加或修改 update
add_dic = {"height": "180cm", "weight": "60kg"}
dic.update(add_dic)
print(dic)  # {'name': 'yuan', 'age': 22, 'sex': 'male', 'height': '180cm', 'weight': '60kg'}

update_dic = {"age": 33, "height": "180cm", "weight": "60kg"}
dic.update(update_dic)
print(dic)  # {'name': 'yuan', 'age': 33, 'sex': 'male', 'height': '180cm', 'weight': '60kg'}

# (4) 字典的循环

dic = {"name": "yuan", "age": 22, "sex": "male"}

# 遍历键值对方式1
# for key in dic:  # 将每个键分别赋值给key
#     print(key, dic.get(key))

# 遍历键值对方式2

# for i in dic.items(): # [('name', 'yuan'), ('age', 22), ('sex', 'male')]
#     print(i[0],i[1])


# 关于变量补充
# x = (10, 20)
# print(x, type(x))  # (10, 20) <class 'tuple'>
# x, y  = (10, 20)
# print(x, y)

for key, value in dic.items():
    print(key, value)

字典进阶使用

# 案例1:列表嵌套字典

data = [
    {"name": "rain", "age": 22},
    {"name": "eric", "age": 32},
    {"name": "alvin", "age": 24},
]

# 循环data,每行按着格式『姓名:rain,年龄:22』将每个学生的信息逐行打印


for stu_dic in data:  # data是一个列表
    # print(stu_dic) #
    print("『姓名:%s,年龄:%s』" % (stu_dic.get("name"), stu_dic.get("age")))

# 将data中第二个学生的年龄查询出来

print(data[1].get("age"))

# 案例2:字典嵌套字典


data2 = {
    1001: {"name": "rain", "age": 22},
    1002: {"name": "eric", "age": 32},
    1003: {"name": "alvin", "age": 24},
}

# 循环data2,每行按着格式『学号1001, 姓名:rain,年龄:22』将每个学生的信息逐行打印

for stu_id, stu_dic in data2.items():
    # print(stu_id,stu_dic)
    name = stu_dic.get("name")
    age = stu_dic.get("age")

    print("『学号: %s, 姓名 %s,年龄:%s』" % (stu_id, name, age))

# name = "yuan"
# age = 22
# sex = "male"
#
# print("『姓名:", name, "年龄:", age, "性别:", sex, "』")
# print("『姓名: %s 年龄: %s  性别: %s 』" % (name, age, sex))
# print("姓名:name")

字典生成式

同列表生成式一样,字典生成式是用来快速生成字典的。通过直接使用一句代码来指定要生成字典的条件及内容替换了使用多行条件或者是多行循环代码的传统方式。

格式:

{字典内容+循环条件+判断条件}
stu = {"id": "1001", "name": "alvin", "age": 22, "score": 100, "weight": "50kg"}
stu = {k: v for k, v in stu.items() if k == "score" or k == "name"}
print(stu)

将一个字典中的键值倒换

dic = {"1": 1001, "2": 1002, "3": 1003}
new_dic = {v: k for k, v in dic.items()}
print(new_dic)

将所有的key值变为大写

print({k.upper():v for k,v in d.items()})

附录

列表.py

# 列表和字典  太重要

# 基本数据类型(不可变数据类型)
a = 1
b = 3.14
c = "yuan"
d = True
# 列表和字典(可变数据类型)

name1 = "张三"
name2 = "李四"
name3 = "王五"

names = "张三 李四 王五"
names.split(" ")  # ["张三","李四","王五"]
s = "hello"
# names = ["张三", "李四", "王五", "", "", "", "", ""]
names = ["张三", "", "", "", "", "", "李四", "王五"]
ages = [18, 19, 20]
l = [1, True, "hello"]

# -------------------      列表的基本操作(序列操作)

#  一:支持索引取值
print(names[1])
print(names[2])
print(names[-1])
names[0] = "张三三"

# 二:切片操作
print(names[1:3])  # ["李四", "王五"]
print(names[-2:-1])  # ["李四", "王五"]
print(names[-2:])  # ["李四", "王五"]

# 三、in操作

print("yuan " in "hello yuan")
print("张三" in names)
print("张" in names)

# 四、+
l1 = [1, 2, 3]
l2 = [4, 5, 6]
print(l1 + l2)  # [1,2,3,4,5,6]
print(l1)
print(type(l1))  # <class 'list'>
print(type(l2))  # <class 'list'>
# -------------------      列表的内置方法
# 列表的内置方法帮助我们对该列表对象的数据元素进行管理(增删改查)
l = [1, 2, 3, 4]
print(type(l))  # <class 'list'>
# <1>添加元素 append insert extend
l.append(5)
l.append([6, 7])
print(l)  # [1, 2, 3, 4,5,[6, 7]]
print(len(l))
l.insert(1, 100)
print(l)
l2 = [5, 6, 7]
l.extend(l2)  # [1, 2, 3, 4,5, 6, 7]
print(l)  # [1, 2, 3, 4, 5, 6, 7]
# <2>删除元素
l = [100, 200, 300, 400]
l.remove(300)
print(l) # [100, 200, 400]
l.pop(1)
print(l)
l.clear()
print(l) # []
# <3>更改元素
l = [100, 200, 300, 400]
l[0] = 1
print(l)

# <4>查看元素
l = [34, 56, 1, 23, 23, 100]
l.reverse()
print(l)
l.sort(reverse=True)
print(l)
print(l.count(23))  # 2
print(l.index(56))


# 遍历
names = ["zhangsan", "lisi", "wangwu"]
print(names[0])
print(names[1])
print(names[2])

for item in names:
    print(item.upper())

nums = [11, 2, 3, 45, 7, 43]
s = 0
for i in nums:
    s += i
print(s)

字典.py

# 列表和字典  太重要

names = ["张三", "李四", "王五"]
ages = [18, 19, 20]
print(ages[names.index("李四")])

stus = [["张三", 19], ["李四", 20], ["李四", 21]]
print(stus[1][1])

stu = ["yuan", 18]
print(stu[0])
print(stu[1])
stu = {"name": "yuan", "age": 18}
print(type(stu))  # <class 'dict'>
print(stu["name"])
print(stu["age"])

# 字典的基本操作(面向增删改查)
stu = {}
stu["name"] = "yuan"
stu["age"] = 18
stu["age"] = 22
print(stu)
print(stu["age"])
# del stu
# print(stu)
del stu["age"]
print(stu)
print("name" in stu)

# 字典的内置方法(面向增删改查)

stu = {"name": "yuan", "age": 32, "gender": "male"}
# 查看
print(stu["name"])
print(stu.get("names", None))
print(stu.items())  # [('name', 'yuan'), ('age', 32), ('gender', 'male')]

stu.popitem()
print(stu)
stu.pop("age")
print(stu)
stu.clear()
print(stu)

stu.update({"age": 18, "height": "182cm", "weight": "90kg"})
print(stu)


# 知识补充
x = [1, 2]
x, y = [1, 2]
print(x, y)

x, y, z = [1, 2, 3]
print(x, y, z)

x, y, *z = [1, 2, 3, 4, 5]
print(x, y, z)

# 遍历
stu = {"name": "yuan", "age": 32, "gender": "male"}

for key in stu:
    print(key, stu[key])

for i in stu.items():  # [['name', 'yuan'], (['age', 32], ['gender', 'male']]
    print(i[0], i[1])

# # 推荐
stu = {"name": "yuan", "age": 32, "gender": "male"}
for k, v in stu.items():  # [('name', 'yuan'), ('age', 32), (gender', 'male')]
    print(k, v)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/209163.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JNPF低代码平台详解 -- 系统架构

目录 一、技术介绍 技术架构 二、设计原理 三、界面展示 1.代码生成器 2.工作流程 3.门户设计 4.大屏设计 5.报表设计 6.第三方登录 7.多租户实现 8.分布式调度 9.消息中心 四、功能框架 JNPF低代码是一款新奇、实用、高效的企业级软件开发工具&#xff0c;支持企…

柱状展示当中 ,如何给每个位置加多个项的办法

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>双柱修改</title> <script src"https://cdn.staticfile.org/Chart.js/3.9.1/chart.js"></script> </head> <body><canvas i…

分治算法——912. 排序数组

文章目录 &#x1f348;1. 题目&#x1f34c;2. 算法原理&#x1f34f;3. 代码实现 &#x1f348;1. 题目 题目链接&#xff1a;912. 排序数组 - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 示例 1&#xff1a; 输入&am…

【Vulnhub 靶场】【Funbox: Lunchbreaker】【简单】【20210522】

1、环境介绍 靶场介绍&#xff1a;https://www.vulnhub.com/entry/funbox-lunchbreaker,700/ 靶场下载&#xff1a;https://download.vulnhub.com/funbox/FunboxLunchbreaker.ova 靶场难度&#xff1a;简单 发布日期&#xff1a;2021年05月22日 文件大小&#xff1a;1.6 GB 靶…

java: 警告: 源发行版 17 需要目标发行版 17

这是一个编译期的报错提示 源发行版 17 , 即说明你的maven项目当前指定的编译版本是jdk17&#xff0c;需要目标发行版 17则是说明你的idea中实际选择的jdk版本并非17 检查你项目中的pom文件中的配置 <properties><java.version>17</java.version><prop…

localStorage 和sessionStorage

localStorage 和 sessionStorage 是浏览器提供的两种客户端存储数据的方式&#xff1a; 生命周期&#xff1a; localStorage&#xff1a; 存储在 localStorage 中的数据在浏览器关闭后仍然保留&#xff0c;直到被显式删除或浏览器清除缓存。sessionStorage&#xff1a; 存储在 …

2023年12月2日历史上的今天大事件早读

823年12月2日 《门罗宣言》发表 1908年12月2日 末代皇帝溥仪登基 1919年12月2日 平江开展驱除湘督张敬尧运动 1929年12月2日 北平周口店发现中国猿人头盖骨 1941年12月2日 美裔华人物理学家朱经武出生 1949年12月2日 中央决定发行人民胜利公债 1952年12月2日 拿破仑三世成…

mac 系统 vmware 安装centos8

选择镜像 安装系统 依次设置有告警的项目 设置用户名密码 设置root密码 重启系统 重启成功进入下面界面 勾选&#xff0c;点击done 点击箭头所指按钮 输入密码登录 安装成功了 设置网络 打开终端 切换root用户 输入下面指令 su root 输入root的密码 安装git

Python爬虫-新能源汽车销量榜

前言 本文是该专栏的第11篇,后面会持续分享python爬虫案例干货,记得关注。 本文以懂车平台的新能源汽车销量榜单为例,获取各车型的销量排行榜单数据。具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。 废话不多说,跟着笔者直接往下看正文详细内容。(附带…

python的制图

测试数据示例&#xff1a; day report_user_cnt report_user_cnt_2 label 2023-10-01 3 3 欺诈 2023-10-02 2 4 欺诈 2023-10-03 6 5 欺诈 2023-10-04 2 1 正常 2023-10-05 4 3 正常 2023-10-06 4 4 正常 2023-10-07 2 6 正常 2023-10-08 3 7 正常 2023-10-09 3 12 正常 2023-…

jetpack compose——圆角、渐变

一、背景圆角、渐变 效果图&#xff1a; 代码为&#xff1a; Box(modifier Modifier.clip(RoundedCornerShape(14.dp)) // 设置圆角半径.background(brush Brush.horizontalGradient( // 设置渐变色listOf(Color(0xFFF5DEC9),Color(0xFFF7A74C),))).constrainAs(box_bottom…

杨志丰:OceanBase助力企业应对数据库转型深水区挑战

11 月 16 日&#xff0c;OceanBase 在北京顺利举办 2023 年度发布会&#xff0c;正式宣布&#xff1a;将持续践行“一体化”产品战略&#xff0c;为关键业务负载打造一体化数据库。OceanBase 产品总经理杨志丰发表了《助力企业应对数据库转型深水区挑战》主题演讲。 以下为演讲…

【el-form】表单label添加?及tooltip

<el-form-item><span slot"label"><el-tooltip :content"tooltip提示框内容" placement"top"><i class"el-icon-question"></i></el-tooltip>{{ $t(menu.status) }}</span><el-radio-gr…

【1】基于多设计模式下的同步异步日志系统

1. 项目介绍 本项⽬主要实现⼀个⽇志系统&#xff0c; 其主要⽀持以下功能: • ⽀持多级别⽇志消息 • ⽀持同步⽇志和异步⽇志 • ⽀持可靠写⼊⽇志到控制台、⽂件以及滚动⽂件中 • ⽀持多线程程序并发写⽇志 • ⽀持扩展不同的⽇志落地⽬标地 2. 开发环境 • CentOS 7 • vs…

(C++)有效三角形的个数--双指针法

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://le…

旋转立方体.html(网上收集5)

<!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>旋转立方体</title><style>#cube {width: 200px;height: 200px;position: relative;transform-style: preserve-3d;animation: rotate 6s infinite linear;mar…

开发问题记录

开发问题记录&#x1f4dd; vant组件开发相关问题 vant开发的组件库初次渲染没问题,只要跳转至其他页面再进来设置的label-align属性就会丢失不生效 原因: 进入其他页面加载了主项目的vant库的css优先级层级高,然后就把组件本身的样式覆盖了, ​​​​ 解决思路: 使用渗透把主…

兼容jlink OB arm仿真器使用(杜邦线过长导致烧写总是失败)

一、兼容jlink OB的使用&#xff1a; 1、设置中要选择jlink&#xff1b; 2、模式选择SWD模式&#xff08;接三根线&#xff09;&#xff1b; 二、杜邦线过长导致stm32的stlink烧写总是失败 用ST-link烧写提示的错误信息有&#xff1a; Error while accessing a target reso…

蓝桥杯day03——Bigram 分词

1.题目 给出第一个词 first 和第二个词 second&#xff0c;考虑在某些文本 text 中可能以 "first second third" 形式出现的情况&#xff0c;其中 second 紧随 first 出现&#xff0c;third 紧随 second 出现。 对于每种这样的情况&#xff0c;将第三个词 "th…

argparse.ArgumentParser() 用法解析cmd命令行选项、参数

一、简介 1、argparse 是一个 Python 模块&#xff1a;命令行选项、参数和子命令解析器。 2、argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数&#xff0c;然后 argparse 将弄清如何从 sys.argv 解析出那些参数。 argparse 模块还会自动生成帮助和…