Python入门笔记(第五期——序列的应用2)
前言:
本文章供python初学者自学学习,以后的话应该会每周末更新一次,因为本人也是在自学python,所以想借此来分享一波笔记。喜欢的话可以关注一下。
正文:
接上期,我们这章说元组和字典。他们三个(列表、元组、字典)都很类似,可以类比去记忆。
一、元组:
它与列表类似,只不过所有元素都是放在小括号里,相邻元素之间用 “,” 分开。元组的内容也可以是任何数据类型。它与列表最主要的区别就是:元组是不可改变的序列,列表是可以改变的序列。
1.元组的创建和删除
格式:
tuplename = (element1,element2,element3)
参数 | 含义 |
---|---|
tuplename | 元组的名称,符合命名规范就可以 |
element1 | 元组中的元素,个数没有限制,类型不限 |
和创建列表类似,只不过把 [ ] 换成(),事是上,我们小括号也是可以省略的,只需要将一组值用逗号分开,它就是元组。
例如:
str1="好好学习","天天向上"
print(str1) #输出('好好学习','天天向上')
不过有一点要注意的是:
当元组中只有一个元素时,我们需要在元素后面加 “,” 如果不加 ","则该变量类型为字符串类型。
先介绍个函数在举下面的例子
type()可以测试变量类型,括号里直接放入要测变量的名称。
varse1 = ("加油!",)
varse2 = ("加油!")
print("varse1的类型为:",type(varse1))
print("varse2的类型为:",type(varse2))
运行结果如下:
这就是加逗号和不加逗号的区别,区别还是很大的。所以呢,一定要加逗号!!!
2.创建空元组
emptytuple = ()
创建一个名称为 emptytuple 的空元组
3.创建数值元组
这就和列表一样了,用tuple()函数
格式:
tuple(data)
data表示可以转换成元组的数据,其类型可以是range()对象、字符串、元组(可以嵌套)
num=tuple(range(10,20,2))
print(num) #输出(10, 12, 14, 16, 18)
4.删除元组
格式:
del name #name为要删除元组的名称
不过python自带垃圾回收机制,所以不需要我们自己删除。
5.访问元组元素
直接用索引来访问
格式:
print(untitle[0])
untitle:表示访问元组的名称。
代码如下:
name = ("张子枫","何炅","黄磊","王源","王俊凯")
print(name[0])
运行结果如下:
当然对于元组也可以采用切片的方式获取指定的元素
例如:
name = ("张子枫","何炅","黄磊","王源","王俊凯")
print(name[:3])
运行结果如下:
从上面两个列子可以看到,当访问元组中单个元素时,输出不包括小括号,如果是字符串的话,输出不带引号,但访问多个元素时,输出不仅带小括号,而且还带单引号。
6.修改元组元素
在文章开头我们说元组不可以修改,那我们现在又要说修改元组元素,好像我是有什么大病似的。但是,我们可以对元组重新赋值。就类似修改元组。举个小例子。
name = ("张子枫","何炅","黄磊","王源","王俊凯")
print(name[:3])
name = (95,69,88,49,83,98,45,68,5,6,46)
print(name[:3])
运行结果如下:
另外,我们可以对元组进行连接组合,我们用 “+” 来进行连接
name = ("张子枫","何炅","黄磊","王源","王俊凯")
print(name)
name = name+(35,65,65,66,98,76,53)
print(name)
运行结果如下:
需要注意的是:元组只能连接元组,不能将字符串、列表等与元组连接在一起。另外呢,当连接的元组只有一个元素时,一定不要忘记在后面加逗号。
7.元组推导式
元组推导式和列表的一样,只不过是把 [ ] 改成 ( ) ,但是还是稍微有一点区别的。
使用元组推导式生成的结果并不是一个元组,而是一个生成器对象,我们要将其转换成元组
转换成元组的函数:tuple()
转换成列表的函数:list()
number = (i for i in range(3))
print(number)
number = tuple(number)
print(number)
运行结果如下:
输出的第一个就是生成器对象,第二个就是生成器对象转换成的元组。
另外,还可以通过for循环来输出
number = (i for i in range(3))
for i in number:print(i,end=" ")
print(number)
number = tuple(number)
print(number)
运行结果如下:
仔细看运行结果,最后一个只输出了一个(),因为for循环遍历后原生成器对象已经不存在了,如果还想在使用生成器对象,都必须在创建一个生成器对象。
二、字典
字典和列表也是类似,但它是无序的可变序列,保存的内容是以 ”键——值对“的形式存放的,就相当于新华字典里面拼音和汉字之间的关系,拼音相当于键,汉字相当于值。
字典特征如下:
1.通过键而不是通过索引来读取
2.字典是任意对象的无序集合
3.字典是可变的,并且可以任意嵌套
4.字典中的键必须唯一
5.字典中的键必须是不可变,可以是元组。
1.字典的创建和删除
形式上,用一个 { } 里面包括键和值分别用 ‘ ’ 括起来,键和值之间用” :“分隔开。
格式:
dictionary = {'key':'value1','key':'value1'}
参数 | 含义 |
---|---|
dictionary | 字典名称 |
key | 键 |
value1 | 值 |
(1)创建空字典
dictionary = {}
dictionary = dict()
用 dict()的方法不仅可以创建一个空字典,还可以通过已有数据快速创建字典
(2)通过映射函数创建字典
格式:
dictionary = dict(zip(list1,list2))
参数 | 含义 |
---|---|
dictionary | 字典名称 |
zip() | 将多个列表或者元组对应位置组合为元组,并返回这些内容的zip对象。如果想得到元组,可以将zip对象使用 tuple()函数转换成元组如果想得到列表,则可使用 list()函数转换成列表 |
list1 | 用于指定要生成字典的键 |
list2 | 用于指定要生成字典的值,如果 list1和 list2 长度不一,则与最短的列表长度相同 |
代码如下:
name = ["张子枫","王源","王俊凯"]
sign = ["处女座","天蝎座","处女座"]
dictionary = dict(zip(name,sign))
print(dictionary)
运行结果如下:
(3)通过给定键——值对创建字典
dictionary = dict(key1=value1,key2=value2,key3=value3)
参数 | 含义 |
---|---|
dictionary | 字典名称 |
key | 字典的键,必须是唯一的,并且不可变,可以是字符串,数字,或者元组 |
value | 字典的值 |
例如:
dictionary = dict(张子枫="处女座",王源="天蝎座",王俊凯="处女座")
print(dictionary)
运行结果如下:
关于这个键为什么不带双引号,(个人观点:因为键是不可改变的。我还没有找到可以说服我的原因,知道的大佬可以在评论区说一下)
还可以使用 dict 对象的 fromkeys()方法创建值为空的字典。
dictionary = dict.fromkeys(list1)
参数说明:
参数 | 含义 |
---|---|
dictionary | 字典名称 |
list1 | 表示字典的键的列表 |
实例:
name = ["张子枫","王源","王俊凯"]
dictionary = dict.fromkeys(name)
print(dictionary)
运行结果如下:
另外如果想通过已有的列表和元组,创建字典,可以使用以下代码:
name = ("张子枫","王源","王俊凯")
sign = ["处女座","天蝎座","处女座"]
dictionary = {name:sign}
print(dictionary)
运行结果如下:
注意:
字典的键只能是元组。不然会报错。
(4)字典的删除
和列表元组一样,不需要的字典可以用 del 删除
del dictionary
当只想删除字典内的全部元素时,可以使用clear(),字典就会变成空字典。
dictionary.clear()
2.访问字典
(1)通过键访问元素
访问字典是通过键来访问元素的值,但是当你要访问的键不存在,系统就会报出异常。我们给出用条件表达式来解决。
dictionary = {"张子枫":"处女座","王源":"天蝎座","王俊凯":"处女座"}
print(dictionary["张子枫"] if '张子枫' in dictionary else "字典里没有此人")
print(dictionary["何炅"] if '何炅' in dictionary else "字典里没有此人")
运行结果如下:
(2)通过get()函数访问元素值
格式:
dictionary.get(key,[default])
参数说明:
参数 | 含义 |
---|---|
dictionary | 字典名称 |
key | 键 |
default | 可选项,用于指定当键不存在时,返回一个默认值,如果省略则返回None |
示例:
dictionary = {"张子枫":"处女座","王源":"天蝎座","王俊凯":"处女座"}
print(dictionary.get("张子枫"))
print(dictionary.get("何炅"))
print(dictionary.get("何炅","字典内没有此人"))
运行结果如下:
3.遍历字典
格式:
dictionary = items()
返回值为为可遍历的键值对元组列表,需要通过for循环来遍历该元组列表,如下:
dictionary = {"张子枫":"处女座","王源":"天蝎座","王俊凯":"处女座"}
for item in dictionary.items():print(item)
运行结果如下:
如果想要获取具体的每个键和值,可以在for循环中设置两个变量
dictionary = {"张子枫":"处女座","王源":"天蝎座","王俊凯":"处女座"}
for key,value in dictionary.items():print(key,"的星座是",value)
运行结果如下:
4.添加、修改、删除字典元素
(1)添加、修改
dictionary[key] = value
参数说明:
参数 | 含义 |
---|---|
dictionary | 字典名称 |
key | 要添加元素的键,必须是唯一的,并且不可变,可以是字符串、数字、元组 |
value | 要添加元素的值,可以是任意数据类型 |
如果新添加的键与已经存在的键重复,那么将使用新值来替换原来键的值,也就相当于修改操作。
代码如下:
dictionary = {"张子枫":"处女座","王源":"天蝎座","王俊凯":"处女座"}
dictionary["何炅"] = '金牛座'
print(dictionary)
dictionary["张子枫"] = '水瓶座'
print(dictionary)
运行结果如下:
(2)删除
删除和之前说删除整个字典一样,还是用 del ,但是当删除元素不存在时,系统就会抛出异常。
看代码:
dictionary = {"张子枫":"处女座","王源":"天蝎座","王俊凯":"处女座"}
if "王源" in dictionary:del dictionary["王源"]
print(dictionary)
运行结果如下:
5.元组推导式
这一部分和列表的没有区别,表现形式和列表非常类似,可以参考《Python入门笔记(第五期——序列的应用1)》,要学会举一反三呢!
结合这两篇文章,你应该多少都对列表和、元组、字典都有了解吧!本节内容就到这里了,希望大家总结一下这三者的区别和联系,千万不要搞混掉。
最后喜欢的话关注一下吧!
Python入门笔记(第五期——序列的应用2)相关推荐
- 深度学习入门笔记(五):神经网络的学习
专栏--深度学习入门笔记 推荐文章 深度学习入门笔记(一):机器学习基础 深度学习入门笔记(二):神经网络基础 深度学习入门笔记(三):感知机 深度学习入门笔记(四):神经网络 深度学习入门笔记(五) ...
- 深度学习入门笔记(五):神经网络的编程基础
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
- Python 入门笔记6——列表
Python 入门笔记6--列表 序列 列表 列表的创建 list()创建 range()创建整数列表 推导式生成列表 列表元素的增加 append()方法 +运算符操作 +=运算符操作 extend ...
- python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹
python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...
- python学习笔记(五)缩进
python学习笔记(五)缩进 原作:http://www.cnblogs.com/vamei/archive/2012/05/29/2524706.html 笔记: #!/usr/bin/env p ...
- 机器学习入门笔记(五):决策树
文章目录 一.决策树模型与学习 1.1 决策树模型 1.2 决策树与 if-then 规则 1.3 决策树与条件概率分布 1.4 决策树的学习 二.特征选择 2.1 信息增益 2.2 例题:利用信息增 ...
- 5岁自学python编程-python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹...
python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...
- python入门笔记——内置函数作业
python入门笔记--内置函数作业 # 求三组连续自然数的和:求出1到10,20到30,35到45的三个和 sum1 = sum(range(1,11)) sum2 = sum(range(20,3 ...
- python入门笔记之初步了解代码
# # python入门笔记之初步了解代码 #### 昨日回顾 ##### 操作系统 对计算机:秘书,管家 对人类:提供一个人性化操作台 ##### 三层架构 ```mermaid graph TD ...
- python学习笔记(五)---替换函数
python学习笔记(五)-替换函数 replace()函数替换内容 用法: replace('需要替换的内容','替换后的内容',替换次数) 备:如果需要替换单引号需要加'\' 例子: str = ...
最新文章
- 利用yum 安装 lamp环境搭载 cacti监控和memcached数据库
- CrackMe-CrackHead
- form表单嵌套,用标签的form属性来解决表单嵌套的问题
- 【jQuery】选择器
- 因为这两天比较忙,所以没有及时把要发表的东西写来.废话少说:我前面把两个简单的滚动说了下.接下来介绍第三种集合循环滚动....
- Erlang入门(二)—并发编程
- AngularJs ng-repeat限制循环次数
- VirtualBox+CentOS6.6安装增强功能包 - Building the main Guest Additions module [失败]
- AI进军B-Box界:输入20秒任意声音,还你一段定制的B-Box演奏
- mice包--R中数据缺失值的处理
- Linux下rpm安装lrzsz
- 微信小程序:wx.getUserInfo 接口的变动与使用
- 软件设计师考试-计算机网络与网络安全部分的笔记
- Oracle P6培训系列:10增加作业并估算工期
- 惠普HP CM1312nfi彩色激光打印机硒鼓替代方案
- Android中实现微信分享的功能
- 计算机网络:应用层 - 万维网 WWW、HTTP 协议以及 HTML 语言
- C# Winform鼠标样式设置方法
- 利用NEO与Unity制作游戏(第1部分)
- VS2005错误 error PRJ0003 生成 cmd.exe 时出错