当前位置: 首页 > news >正文

零基础小白 Python这样学就对啦!——05篇

一、数据类型 -- 元组(tuple)

1.1 元组是什么?

元组和列表相似,只是列表元素放在 [] 里面,元组的元素放在 () 里面。

L = [1, 2, 3, 4, 5] 
print(L, type(L)) 
T = (1, 2, 3, 4, 5) 
print(T, type(T))s = "" 
l = [] 
t = () 
print(type(s), type(l), type(t)) 
print(len(s), len(l), len(t)) 
t1 = (1) 
print(t1, type(t1)) 
# 输出结果:1 <class 'int'> 
t2 = (1,) 
print(t2, type(t2)) 
t3 = tuple() 
print(t3, type(t3))

1.2 访问元组

元组的访问,和列表一样可以直接遍历元素,也可以通过索引/下标遍历。

1.2.1 遍历元组

t = (1, 2, 3, 'hqyj', [6, 7, 8]) 
for i in t: print(i) 
for i in range(len(t)): print(t[i])

1.2.2 元组截取/切片

t = (1, 2, 3, 'hqyj', [6, 7, 8]) 
print(t[:]) 
print(t[::-1]) 
print(t[1:5:2])

1.3 修改元组【NO】

元组中的元素项是不允许修改的。

t = (1, 2, 3, 'hqyj', [6, 7, 8]) 
t[3] = 'xxxx' 
print(t) 
# TypeError: 'tuple' object does not support item assignment 
# 类型错误:tuple 对象不支持项赋值

元组可以包含可变对象——列表,对列表项进行修改。

t = (1, 2, 3, 'hqyj', [6, 7, 8]) 
t[4][0] = 666 
print(t) 
# 元组对象不支持项赋值 
# 但是元组可以包含可变对象——列表 
# 然后对列表项进行赋值修改

1.4 删除元组【NO】

不可以删除元组元素,可以删除整个元素

t = (1, 2, 3, 'hqyj', [6, 7, 8]) 
# del t[0] 
del t

1.5 元组的运算

因为元组是不可变的,所以元组的运算较为简单,有如下。

t1 = (11, 2, 13, 4) 
t2 = (6, 12, 88, 10) 
print(t1+t2) 
print(t1*2) 
print(len(t1), len(t2)) 
print(max(t1), min(t2)) 
print(sum(t1), sum(t2)) 
print(t1.index(13)) 
print(t2.count(10))

1.6 关于元组是不可变的

可读不可写

二、数据类型 -- 集合(set)【用的不多,了解即可】

2.1 集合是什么?

集合是一个无序的[没有下标索引的] 不重复的[去重] 序列,所有元素放在 {} 里面,中间以逗号隔开。

有序序列:有下标索引,字符串、列表、元组

无序序列:集合、字典

s = "" 
l = [] 
t = () 
set1 = set() # 因为字典也用{}括起来,所以不能用{}创建空集合,必须使用内置函数set() 
print(type(s), type(l), type(t), type(set1)) # 创建一个只包含一个元素的集合 
set2 = {1} print(type(set2))

集合支持集合推导式(Set comprehension):

具体可看下方链接:

Python高级语法:推导式-CSDN博客

使用推导式,创建一个包含100以内能被3和5整除的数的集合 使用推导式,
创建一个集合,元素在'welcome to hqyj'中但不在'hello'中 set1 = {i for i in range(100) if i%3==0 and i%5==0} 
print(set1) 
set2 = {i for i in 'welcome to hqyj' if i not in 'hello'} 
print(set2) 
# 集合有去重性 
set3 = {i for i in 'aaaaaaa'} 
print(set3)

2.2 添加元素

  1. 将元素 x 添加到集合 set 中,如果元素已存在,则不进行任何操作,语法格式如下:set.add(x)
  2. 还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:set.update(x) x 可以有多个,用逗号分开。
set1 = {1, 2, 3, 4, 5} 
set1.add(3) 
print(set1) 
set1.add(66) 
print(set1) 
set1.update((77,88,99)) 
print(set1) 
set1.update("hqyj666") 
print(set1)

2.3 移除元素

  1. 将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误,语法格式如下:set.remove(x)
  2. 移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:set.discard(x)
  3. 我们也可以设置随机删除集合中的一个元素,语法格式如下:set.pop()
  4. 我们也可以使用clear()清空集合元素
set1 = {'3zhangsan', '5lisi', '2wangwu', '4xiaohua'} 
set1.remove('5lisi') 
print(set1) 
set1.discard('haqyj') 
print(set1) 
set1.pop() 
print(set1) 
set1.clear() 
print(set1)

set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面边第一个元素进行删除。

2.4 集合的数学运算

a = {1, 2, 3, 4, 5} b = {3, 4, 5, 6, 7} 
print("a与b的交集", a & b) 
print("a与b的并集", a | b) 
print("a与b的异或集", a ^ b) 
print("a与b的差集", a - b, b - a) 
s1 = {1, 2, 3} 
s2 = {1, 2, 3, 4, 5} print("s1是s2的子集吗?", s1 <= s2) 
print("s1是s2的真子集吗?", s1 < s2)

小练 

分别有两个集合 st1 = {1,2,1,3,4,5,6,7}         st2 ={2,5,6,9,5,8,75} ,要求:

1. 求出他们之间的交集

2. 求出他们之间的并集

3. 求出他们之间的差集(分别求出st1-st2 和 st2-st1)

4. 求出他们之间的异或集

2.5 集合内置方法【了解即可】

方法

描述

add()

为集合添加元素

clear()

清空

copy()

拷贝一个集合

difference()

返回多个集合的差集

difference_update()

移除集合中的元素,该元素在指定的集合也存在。

discard()

删除集合中指定的元素

intersection()

返回集合的交集。

intersection_update()

返回集合的交集。

isdisjoint()

判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。

issubset()

判断指定集合是否为该方法参数集合的子集。

issuperset()

判断该方法的参数集合是否为指定集合的子集

pop()

随机移除元素

remove()

移除指定元素

symmetric_difference()

返回两个集合中不重复的元素集合。

symmetric_difference_update()

移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

union()

返回两个集合的并集

update()

给集合添加元素

2.6 练习题

(1) 部门员工统计: 经理有:曹操,刘备,孙权 技术员:曹操,孙权,张飞,关羽 用集合完成以下要求:

1.既是经理也是技术员的有谁?

2.是技术员但不是经理的人有谁?

3.张飞是经理吗?

4.身兼一职的人有谁?

(2)IEEE 和 TIOBE 是两大热门编程语言排行榜。截至 2018 年 12 月, IEEE榜排名前五的语言是:Python、C++、C、Java 和 C#。 TIOBE榜排名前五的语 言分别是:Java、C、Python、C++和 VB.NET。 请编程:

1、上榜的所有语言

2、两个榜单中同时出现的语言

3、只在 IEEE 榜中前五的语言

4、只在一个榜中出现的语言

(3) 生成了 N 个 1~100 之间的随机整数(N<=1000),N 是用户输入的; 对于其中重复的数字,只保留一个,把其余相同的数字去掉;

三、数据类型 -- 字典(dictionary)

3.1 字典是什么?

数据元素是键值对【键和值用冒号相连】,多个键值对元素放在 {} 里面,中间以 逗号 隔开。

注意:

  1. 键是唯一的,若有多个,只保留最后一次赋值的结果。
  2. 键还必须是不可变数据类型——字符串、数值、元组。

3.2 创建字典

str1 = "" 
list1 = [] 
tuple1 = () 
set1 = set() 
dict1 = {} 
print(type(str1), type(list1), type(tuple1), type(set1), type(dict1))d1 = {'name':'张三', 'age':18, 'sex':'男'} 
print(d1) 
d2 = dict(zhangsan=18, lisi=20, wangwu=19) 
print(d2) 
d3 = dict([('zhangsan',18), ('lisi',20), ('wangwu',19)]) 
print(d3) 
name = ['张三', '李四', '王五'] 
d4 = dict.fromkeys(name, 18) 
print(d4)

3.3 访问、遍历字典

字典是无序序列,没有下标索引。但是可以把相应的键放入到方括号中,通过键去访问值,就像我们查字典是一样的,键就是那个‘人字旁’, 通过'人字旁'的索引查到所有的值。

dict1 = {'人字旁':['你', '他', '们'], '木字旁':['树', '林', '村']} 
print(dict1) 
print(dict1['木字旁']) 
# print(dict1['走之旁']) 
# KeyError: '走之旁'遍历字典的键、值、键值对dict1 = {'人字旁':['你', '他', '们'], '木字旁':['树', '林', '村']} 
# for i in dict1: 
#     print(i) 
# for i in dict1: 
#     print(dict1[i]) for i in dict1.keys(): print(i) 
for i in dict1.values(): print(i) 
for i in dict1.items(): print(i)

3.4 修改字典

通过键的索引,赋值修改值即可。键存在,就修改;键不存在,就添加在末尾。

d1 = {'name':'张三', 'age':18, 'sex':'男'} 
# 存在键,修改 
d1['age'] = 20 print(d1) 
# 不存在键,添加 
d1['score'] = 100 print(d1) 
''' 
字符串 s[0] = '66' 
报错——不可变 
列表中 l[0] = 66 
元组中 t[0] = 66 
报错——不可变 
集合中 st[0] = 66 
报错——无序序列,无下标 
字典中 d['age'] = 20 
'''

3.5 删除字典元素

在Python中,你可以通过多种方式来删除字典(dict)中的元素。以下是几种常见的方法:

1. 使用 del 语句#del 语句可以用来删除字典中的某个键值对。my_dict = {'a': 1, 'b': 2, 'c': 3}
del my_dict['b']      # 删除键 'b' 及其对应的值
print(my_dict)        # 输出: {'a': 1, 'c': 3}2. 使用 pop() 方法#pop() 方法也可以删除字典中的某个键值对,并且会返回被删除的值。如果尝试删除的键不存在,可以提#供一个默认值来避免抛出 KeyError。my_dict = {'a': 1, 'b': 2, 'c': 3}
value = my_dict.pop('b')      # 删除键 'b' 并返回其值
print(value)                  # 输出: 2
print(my_dict)                # 输出: {'a': 1, 'c': 3}# 如果键不存在,可以提供一个默认值
value = my_dict.pop('d', 'Not Found')  # 尝试删除不存在的键 'd'
print(value)  # 输出: Not Found3. 使用字典推导式(字典解析)#虽然字典推导式本身不是用来删除元素的,但你可以用它来创建一个不包含要删除元素的新字典。my_dict = {'a': 1, 'b': 2, 'c': 3}
keys_to_remove = ['b']  # 要删除的键的列表# 使用字典推导式创建新字典,排除要删除的键
new_dict = {k: v for k, v in my_dict.items() if k not in keys_to_remove}
print(new_dict)  # 输出: {'a': 1, 'c': 3}4. 清除整个字典#如果你想要清除字典中的所有元素,可以使用 clear() 方法。my_dict = {'a': 1, 'b': 2, 'c': 3}
my_dict.clear()  # 清除所有元素
print(my_dict)  # 输出: {}

3.6 字典键的特性

在Python中,字典(dict)的键具有一些独特的特性和要求:

  1. 唯一性
    字典中的键必须是唯一的。这意味着你不能有两个键具有相同的值。如果尝试添加一个已经存在的键,其对应的值将被新值覆盖。

  2. 不可变性
    字典的键必须是不可变的类型。这通常意味着键可以是数字(整数和浮点数,但通常用作键的是整数)、字符串或元组。列表、集合和其他可变类型不能用作字典的键,因为它们的值可以在不创建新对象的情况下被改变,这可能会破坏字典的内部结构。

  3. 哈希性
    为了有效地在字典中查找、插入和删除键值对,键需要支持哈希操作。这意味着键需要有一个哈希值,这个哈希值在键的生命周期内应该是稳定的(即,只要键的内容不变,其哈希值也不应该改变)。所有不可变类型在Python中都支持哈希操作,因此它们可以用作字典的键。

  4. 无顺序
    在Python 3.6及更高版本中,字典保留了插入顺序作为实现细节,但这并不意味着你应该依赖这种顺序。在Python 3.7及更高版本中,这种顺序保证成为了语言规范的一部分。然而,即使如此,字典仍然被视为无序的数据结构,除非你明确地使用collections.OrderedDict来保持元素的插入顺序。

3.7 字典内置函数&方法

函数

描述

dict.clear()

删除字典内所有元素

dict.copy()

返回一个字典的浅复制

dict.fromkeys()

创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

dict.get(key, default=None)

返回指定键的值,如果键不在字典中返回 default 设置的默认值

key in dict

如果键在字典dict里返回true,否则返回false

dict.items()

以列表返回一个视图对象

dict.keys()

返回一个视图对象

dict.setdefault(key, default=None)

和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

dict.update(dict2)

把字典dict2的键/值对更新到dict里

dict.values()

返回一个视图对象

pop(key[,default])

删除字典 key(键)所对应的值,返回被删除的值。

popitem()

返回并删除字典中的最后一对键和值。


http://www.mrgr.cn/news/67941.html

相关文章:

  • 【Hive sql 面试题】现有用户登录记录表,请查询出用户连续三天登录的所有数据记录(难)
  • python-web开发神器:FastAPI详细使用(简单易用)
  • 什么是采购合同管理?
  • D60【python 接口自动化学习】- python基础之数据库
  • linux驱动-i2c子系统框架学习(1)
  • 第三百一十四节 Java线程教程 - Java当前线程
  • RMQ消息发送失败处理
  • 解析静态链接
  • 理解Web登录机制:会话管理与跟踪技术解析(二)-JWT令牌
  • MP2315 DC-DC电源芯片引脚功能说明
  • 基于STM32的温室自主灌溉系统(论文+源码)
  • 初识arkts2
  • 父组件调用函数式子组件,并向子组件传递函数参数。
  • PCL截取ROI
  • 123456789
  • CORS(跨域资源共享)和SOP(同源策略)
  • C++从零到满绩——命名空间、输入输出and缺省参数
  • 架构师:如何提高web网站的请求并发响应量?
  • 高速电机精确控制
  • kafka+zookeeper的搭建
  • 【笔记】变压器-热损耗-频响曲线推导 - 04 额定功率处损耗特性
  • 【jmeter】jmeter的线程组功能的详细介绍
  • lua入门教程:ipairs
  • JMM内存模型详解
  • 【wxWidgets GUI设计教程 - 高级布局与窗口管理】
  • 「Mac畅玩鸿蒙与硬件20」鸿蒙UI组件篇10 - Canvas 组件自定义绘图