前言:
本文章供python初学者自学学习,以后的话应该会每周末更新一次,因为本人也是在自学python,所以想借此来分享一波笔记。喜欢的话可以关注一下。
正文:
接上期,我们这章说元组和字典。他们三个(列表、元组、字典)都很类似,可以类比去记忆。
一、元组:
它与列表类似,只不过所有元素都是放在小括号里,相邻元素之间用 “,” 分开。元组的内容也可以是任何数据类型。它与列表最主要的区别就是:元组是不可改变的序列,列表是可以改变的序列。

1.元组的创建和删除
格式:

tuplename = (element1,element2,element3)

参数

含义

tuplename

元组的名称,符合命名规范就可以

element1

元组中的元素,个数没有限制,类型不限

和创建列表类似,只不过把 [ ] 换成(),事是上,我们小括号也是可以省略的,只需要将一组值用逗号分开,它就是元组。
例如:

str1="好好学习","天天向上"
print(str1)      #输出('好好学习','天天向上')

不过有一点要注意的是:
当元组中只有一个元素时,我们需要在元素后面加 “,” 如果不加 ","则该变量类型为字符串类型。
先介绍个函数在举下面的例子
type()可以测试变量类型,括号里直接放入要测变量的名称。

varse1 = ("加油!",)
varse2 = ("加油!")
print("varse1的类型为:",type(varse1))
print("varse2的类型为:",type(varse2))

运行结果如下:

python 机器 序列号 python中序列_生成器


这就是加逗号和不加逗号的区别,区别还是很大的。所以呢,一定要加逗号!!!

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

运行结果如下:

python 机器 序列号 python中序列_python 机器 序列号_02


当然对于元组也可以采用切片的方式获取指定的元素

例如:

name = ("张子枫","何炅","黄磊","王源","王俊凯")
print(name[:3])

运行结果如下:

python 机器 序列号 python中序列_字符串_03


从上面两个列子可以看到,当访问元组中单个元素时,输出不包括小括号,如果是字符串的话,输出不带引号,但访问多个元素时,输出不仅带小括号,而且还带单引号。

6.修改元组元素
在文章开头我们说元组不可以修改,那我们现在又要说修改元组元素,好像我是有什么大病似的。但是,我们可以对元组重新赋值。就类似修改元组。举个小例子。

name = ("张子枫","何炅","黄磊","王源","王俊凯")
print(name[:3])
name = (95,69,88,49,83,98,45,68,5,6,46)
print(name[:3])

运行结果如下:

python 机器 序列号 python中序列_元组_04


另外,我们可以对元组进行连接组合,我们用 “+” 来进行连接

name = ("张子枫","何炅","黄磊","王源","王俊凯")
print(name)
name = name+(35,65,65,66,98,76,53)
print(name)

运行结果如下:

python 机器 序列号 python中序列_python 机器 序列号_05


需要注意的是:元组只能连接元组,不能将字符串、列表等与元组连接在一起。另外呢,当连接的元组只有一个元素时,一定不要忘记在后面加逗号。

7.元组推导式
元组推导式和列表的一样,只不过是把 [ ] 改成 ( ) ,但是还是稍微有一点区别的。
使用元组推导式生成的结果并不是一个元组,而是一个生成器对象,我们要将其转换成元组
转换成元组的函数:tuple()
转换成列表的函数:list()

number = (i for i in range(3))
print(number)
number = tuple(number)
print(number)

运行结果如下:

python 机器 序列号 python中序列_字符串_06


输出的第一个就是生成器对象,第二个就是生成器对象转换成的元组。

另外,还可以通过for循环来输出

number = (i for i in range(3))
for i in number:
    print(i,end=" ")
print(number)
number = tuple(number)
print(number)

运行结果如下:

python 机器 序列号 python中序列_字符串_07


仔细看运行结果,最后一个只输出了一个(),因为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)

运行结果如下:

python 机器 序列号 python中序列_字符串_08


(3)通过给定键——值对创建字典

dictionary = dict(key1=value1,key2=value2,key3=value3)

参数

含义

dictionary

字典名称

key

字典的键,必须是唯一的,并且不可变,可以是字符串,数字,或者元组

value

字典的值

例如:

dictionary = dict(张子枫="处女座",王源="天蝎座",王俊凯="处女座")
print(dictionary)

运行结果如下:

python 机器 序列号 python中序列_元组_09


关于这个键为什么不带双引号,(个人观点:因为键是不可改变的。我还没有找到可以说服我的原因,知道的大佬可以在评论区说一下)

还可以使用 dict 对象的 fromkeys()方法创建值为空的字典。

dictionary = dict.fromkeys(list1)

参数说明:

参数

含义

dictionary

字典名称

list1

表示字典的键的列表

实例:

name = ["张子枫","王源","王俊凯"]
dictionary = dict.fromkeys(name)
print(dictionary)

运行结果如下:

python 机器 序列号 python中序列_python 机器 序列号_10


另外如果想通过已有的列表和元组,创建字典,可以使用以下代码:

name = ("张子枫","王源","王俊凯")
sign = ["处女座","天蝎座","处女座"]
dictionary = {name:sign}
print(dictionary)

运行结果如下:

python 机器 序列号 python中序列_python 机器 序列号_11


注意:

字典的键只能是元组。不然会报错。

(4)字典的删除
和列表元组一样,不需要的字典可以用 del 删除

del dictionary

当只想删除字典内的全部元素时,可以使用clear(),字典就会变成空字典。

dictionary.clear()

2.访问字典

(1)通过键访问元素
访问字典是通过键来访问元素的值,但是当你要访问的键不存在,系统就会报出异常。我们给出用条件表达式来解决。

dictionary = {"张子枫":"处女座","王源":"天蝎座","王俊凯":"处女座"}
print(dictionary["张子枫"] if '张子枫' in dictionary else "字典里没有此人")
print(dictionary["何炅"] if '何炅' in dictionary else "字典里没有此人")

运行结果如下:

python 机器 序列号 python中序列_元组_12


(2)通过get()函数访问元素值

格式:

dictionary.get(key,[default])

参数说明:

参数

含义

dictionary

字典名称

key


default

可选项,用于指定当键不存在时,返回一个默认值,如果省略则返回None

示例:

dictionary = {"张子枫":"处女座","王源":"天蝎座","王俊凯":"处女座"}
print(dictionary.get("张子枫"))
print(dictionary.get("何炅"))
print(dictionary.get("何炅","字典内没有此人"))

运行结果如下:

python 机器 序列号 python中序列_python 机器 序列号_13


3.遍历字典

格式:

dictionary = items()

返回值为为可遍历的键值对元组列表,需要通过for循环来遍历该元组列表,如下:

dictionary = {"张子枫":"处女座","王源":"天蝎座","王俊凯":"处女座"}
for item in dictionary.items():
    print(item)

运行结果如下:

python 机器 序列号 python中序列_生成器_14


如果想要获取具体的每个键和值,可以在for循环中设置两个变量

dictionary = {"张子枫":"处女座","王源":"天蝎座","王俊凯":"处女座"}
for key,value in dictionary.items():
    print(key,"的星座是",value)

运行结果如下:

python 机器 序列号 python中序列_元组_15


4.添加、修改、删除字典元素

(1)添加、修改

dictionary[key] = value

参数说明:

参数

含义

dictionary

字典名称

key

要添加元素的键,必须是唯一的,并且不可变,可以是字符串、数字、元组

value

要添加元素的值,可以是任意数据类型

如果新添加的键与已经存在的键重复,那么将使用新值来替换原来键的值,也就相当于修改操作。
代码如下:

dictionary = {"张子枫":"处女座","王源":"天蝎座","王俊凯":"处女座"}
dictionary["何炅"] = '金牛座'
print(dictionary)
dictionary["张子枫"] = '水瓶座'
print(dictionary)

运行结果如下:

python 机器 序列号 python中序列_元组_16


(2)删除

删除和之前说删除整个字典一样,还是用 del ,但是当删除元素不存在时,系统就会抛出异常。

看代码:

dictionary = {"张子枫":"处女座","王源":"天蝎座","王俊凯":"处女座"}
if "王源" in dictionary:
	del dictionary["王源"]
print(dictionary)

运行结果如下:

python 机器 序列号 python中序列_python 机器 序列号_17


5.元组推导式

这一部分和列表的没有区别,表现形式和列表非常类似,可以参考《Python入门笔记(第五期——序列的应用1)》,要学会举一反三呢!

结合这两篇文章,你应该多少都对列表和、元组、字典都有了解吧!本节内容就到这里了,希望大家总结一下这三者的区别和联系,千万不要搞混掉。

最后喜欢的话关注一下吧!