首页 > 编程语言 >day 03 3.1 Python重要数据类型

day 03 3.1 Python重要数据类型

时间:2023-04-20 16:59:36浏览次数:34  
标签:03 name Python age 数据类型 dic print 列表 字典

重要数据类型

5.1、列表

5.1.1、列表声明

  • 在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。
    • 列表就是这样的一个数据结构。
  • 列表会将所有元素都放在一对中括号[ ]里面,相邻元素之间用逗号,分隔,
    • 如下所示:
[element1, element2, element3, ..., elementn]

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

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

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

5.1.2、序列操作

  • 列表是 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)

5.1.3、列表内置方法

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]

5.1.4、列表推导式

  • 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。
variable    =    [表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]

[if 条件表达式] 不是必须的,可以使用,也可以省略。

案例:

  • 计算1-100中所有偶数的平方
# 计算1-100中所有偶数的平方
new_l = [i * i for i in range(100) if i % 2 == 0]
print(new_l)
  • 以上所看到的列表推导式都只有一个循环,实际上它可使用多个循环,就像嵌套循环一样。

练习1:

old = [[1, 2], [3, 4], [5, 6]]
# 从old中一个一个取出值,对取出的值(i)再进行一次遍历取值操作(也可以进行判断或者运算)
new = [j for i in old for j in i]
print(new)

练习2:

l1 = [1, 2, 3]
l2 = [4, 5, 6]
ret = [[i,j] for i in l1 for j in l2]
print(ret) # [[1, 4], [1, 5], [1, 6], [2, 4], [2, 5], [2, 6], [3, 4], [3, 5], [3, 6]]

5.2 、元组

5.2.1、声明元组

  • Python的元组与列表类似,

    • 不同之处在于元组的元素只能读,不能修改。
    • 通常情况下,元组用于保存无需修改的内容。
  • 元组使用小括号表示,声明一个元组:

(element1, element2, element3, ..., elementn)

需要注意的一点是,当创建的元组中只有一个字符串类型的元素时,该元素后面必须要加一个逗号,,否则 Python 解释器会将它视为字符串。

l = (1,2,3)
print(l,type(l)) # (1, 2, 3) <class 'tuple'>

5.2.2、序列操作

  • 和列表一样,支持索引和切片操作。
l = (1,2,3,4,5)
print(l[2]) # 3
print(l[2:4]) # (3, 4)
print(l[:4]) # (1, 2, 3, 4)
print(2 in l)

5.2.3、内置方法

l = (1,2,3,4,5)
print(l.count(3))
print(l.index(2))

5.3、字典

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

5.3.1、声明字典

  • python使用 { } 创建字典,
    • 由于字典中每个元素都包含键(key)和值(value)两部分,因此在创建字典时,
      • 键和值之间使用冒号:分隔,
      • 相邻元素之间使用逗号,分隔,
      • 所有元素放在大括号{ }中。
  • 使用{ }创建字典的语法格式如下:
dictname = {'key':'value1', 'key2':'value2', ...}

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

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

5.3.2、字典的基本操作

# (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])

5.3.3、字典的内置方法

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

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

dic.clear()  # 删除键值对

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

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

# (4) 字典的循环

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

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

# 遍历键值对方式2

# for i in dic.items(): # [('name', 'dream'), ('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)

5.3.4、字典的进阶使用

# 案例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 = "dream"
# age = 22
# sex = "male"
#
# print("『姓名:", name, "年龄:", age, "性别:", sex, "』")
# print("『姓名: %s 年龄: %s  性别: %s 』" % (name, age, sex))
# print("姓名:name")

6.3.5、字典生成式

  • 同列表生成式一样,字典生成式是用来快速生成字典的
    • 通过直接使用一句代码来指定要生成字典的条件及内容替换了使用多行条件或者是多行循环代码的传统方式。
  • 格式:
{字典内容+循环条件+判断条件}
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()})

6.5、章节练习题

# 1. l1 = [1, 2, 3, 4, 5]
# (1)在l1的元素3后面插入300
# (2)删除元素2
# (3)将5更改为500
# (4)将2,3,4切片出来
# (5)l1[-3:-5]的结果
# (6)l1[-3:]的结果

# 2. 通过input引导用户输入一个姓名,判断该姓名是否存在于列表names中
# names = ["dream","eric","alvin","george"]

# 3. l = [1,2,3,[4,5]]
# (1)将4修改为400
# (2)在l的[4,5]列表中追加一个6,即使l变为[1,2,3,[4,5,6]]

# 4. 数一下字符串"天津 北京 上海 深圳 大连"中的城市个数

# 5. 将字符串"56,45,6,7,2,88,12,100"转换为按顺序显示的"2 6 7 12 45 56 88 100"

标签:03,name,Python,age,数据类型,dic,print,列表,字典
From: https://www.cnblogs.com/dream-ze/p/17337367.html

相关文章

  • 关于项目组件打包时遇到 `Uncaught TypeError: Cannot read property 'toLowerCase' o
    在全局注册组件时采用遍历组件池的方法时 每个组件都应该具备name属性 否则会出现UncaughtTypeError:Cannotreadproperty'toLowerCase'ofundefined  ......
  • day 01 1.1 Python基础之编程语言介绍
    Python基础之编程语言介绍1.1、什么是编程语言编程语言是用来控制计算机的一系列指令(Instruction),它有固定的格式和词汇(不同编程语言的格式和词汇不一样)。就像我们中国人之间沟通需要汉语,英国人沟通需要英语一样,人与计算机之间进行沟通需要一门语言作为介质,即编程语言。编程语言......
  • day 01 1.2 Python基础之Python语言介绍
    Python语言介绍2.1、了解Python语言Python是1989年荷兰人GuidovanRossum(简称Guido)在圣诞节期间为了打发时间,发明的一门面向对象的解释性编程语言。Python来自Guido所挚爱的电视剧MontyPython'sFlyingCircus。Guido对于Python的设计理念就是一门介于shell和C......
  • LeetCode Top100: 买卖股票的最佳时机 (python)
    LeetCodeTop100: 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这......
  • Python基础语法
    Python标识符在Python中,标识符由字母、数字、下划线组成。标识符要求如下:可以包括英文,数字以及下划线;不能以数字开头;区分大小写;以单下划线开头(eg:_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用fromxxximport*而导入;以双下划线开头的(eg:__foo)......
  • python中scrapy框架安装和创建
    第一步是先安装wheelpipinstallwheel第二步是安装lxmlpipinstalllxml第三步是安装Twisted,先在https://www.lfd.uci.edu/~gohlke/pythonlibs/中找到Twisted,然后找到与自己安装的python的版本对应的版本下载下来,然后执行安装,因为我安装的的3.10.11版本,所以我下载的是310......
  • 各平台安装python
    windowwin10+Python3.9.6https://www.python.org/ftp/python/https://www.python.org/ftp/python/3.9.6/这里以Python目前的最新版3.9.6版本为例,本教程也适用于Python3.x版本的安装。但推荐大家安装使用Python3.6及以上版本。访问这个地址:https://www.python.org/ftp/py......
  • 通过python获取SSL证书到期时间
    在前面的文章中曾介绍过如何通过openssl命令获取SSL证书的到期时间:通过zabbix监控ssl证书到期时间。有人反馈实践中这种方式存在缺陷,可能会出现部分域名证书无法获取的情况,报错如下:140323981043600:error:0906D06C:PEM routines:PEM_read_bio:nostartline:pem_lib.c:707:Expe......
  • 51单片机学习笔记 STC89CRC (03)蜂鸣器和三级管
    蜂鸣器根据工作原理的不同可分为"电磁式蜂鸣器"和"压电式蜂鸣器"蜂鸣器根据驱动方式可分为"有源蜂鸣器"和"无源蜂鸣器"有源蜂鸣器:一通电就会叫无源蜂鸣器:必须用2k~5k的方波去驱动它 三极管直插式封装TO-92:面向三极管平的一面,从左往右数1.发射极2.基极3.集电极......
  • python操作pptx设置title字体大小插入全屏图片A4尺寸实例一枚
    pipinstallpython-pptx安装好pptx,设置标题最大的作用是ppt里面的摘要视图显示摘要文字参考:https://python-pptx.readthedocs.io/en/latest/ frompptximportPresentationfrompptx.utilimportCmpwidth,pheight=Cm(29.7),Cm(21)#A4大小297*210left=top=0prs=......