Python趣味入门8:集合变量-列表、集合、元组、字典

1、前言

凛东将至,琼恩·雪诺当上司令官命令山姆威尔去南方,到旧镇学习成为一个学士再回黑城堡。山姆发现如要熟练在图书馆中查询藏书,必须熟悉”列表”、”集合”、”元组”和”字典”4种数据组织形式。

2、列表list

图书馆里所有书架上的书都是以一张“清单”的形式出现。为了帮助理解这份清单,山姆记得他小时候做过的最快乐的事情就是购物。因为妈妈会买她最喜欢的西红柿。竹棍可以把许多山楂串在一起。列表处理数据实际上非常类似于在棍子上吃西红柿:

[En]

The books on all the shelves in the library are in the form of a “list”. In order to help understand the list, Sam remembers that the happiest thing he did when he was a child was shopping. Because mom will buy Tomatoes on sticks, her favorite food. Bamboo sticks can string many Hawthorns together. List processing data is actually very similar to eating Tomatoes on sticks:

Python趣味入门8:集合变量-列表、集合、元组、字典

上面两种形式都是”列表”,特点如下:

  • 元素井然有序。列表中的元素是有序的,可以通过下标定位。
    [En]

    elements are in order. The elements in the list are ordered and can be located by subscript.*

  • 可以编辑。列表变量中的元素可以删除和添加。
    [En]

    can be edited. Elements in list variables can be deleted and added.*

2.1 列表的定义

|元素0|元素1|…

如上所示,列表中的元素从0开始。

[En]

As shown above, the elements in the list start at 0.

下面的代码使用圆括号和逗号定义列表的内容。各种列表形式定义如下:五个整数的列表,包括1、2、3、4、5等。

[En]

The following code uses parentheses and commas to define the contents of the list. Various list forms are defined as follows, such as: a list of five integers, including 1, 2, 3, 4, 5, etc.

1 a=[1,2,3,4,5]   #定义5个元素的列表
2 b=[] #定义了空的列表
3 c=['夜王前传',1045,'龙晶使用方法',1056] #定义了书名页数
4 d=[['夜王前传','龙晶使用方法'],[1045,1056]]   #定了2个列表元素(书名列表、页数列表)的列表

定义完成后,您可以通过以下方式“获取数据”:

[En]

When the definition is complete, you can “fetch the data” in the following ways:

python;gutter:true; a[0] #表示第0个元素1 a[1] #表示第1个元素2 c[1] #表第第1个元素1045</p> <pre><code> 此外,您还可以使用负数向后返回元素。今天,山姆的女朋友吉莉来看他。体艺两人打牌。我们可以这样定义纸牌游戏:<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>In addition, you can also use negative numbers to get the elements backwards. Today, Sam's girlfriend Gilly came to see him. Tiyi two people play cards. We can define a game of cards as follows:</font>*</details> ![](https://pic1.zhimg.com/80/v2-32ddc40b36f6d46830cf5c815539f568_1440w.jpg) ### 2.2 切片操作 列表在计算机上有以下主流操作:切片、删除、弹出和添加。<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Lists have the following mainstream operations on computers: slice, delete, pop up, and add.</font>*</details> 切片就像在书柜(列表)中抽出中间一部分书本(元素),切片操作是这样的,使用冒号分隔前后位置( _重要:后面的位置是不被包括的_),继续之前定义我们看示例: </code></pre> <p>a=[1,2,3,4,5] #定义5个元素的列表</p> <h1>形成新的列表[2,3]</h1> <p>a[-4:-2]</p> <h1>形成新的列表[2,3]</h1> <p>a[1:3]</p> <pre><code> 切片可以省略前面和后面的数字,表示开始和结束。切片的优点是它不会产生“溢出错误”。以下代码仅返回一个空列表,并且在计算时不会出错:<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Slicing can omit the numbers before and after, indicating the beginning and end. The advantage of slicing is that it does not produce an "overflow error". The following code only returns an empty list and does not make an error when calculating:</font>*</details> </code></pre> <h1>表示从第100位置开始到结束的切片,返回空</h1> <p>a[100:]</p> <h1>下面语句会产生溢出错误</h1> <p>a[100]</p> <pre><code> ### 2.3 添加删除操作 使用append动作来添加元素至队尾、使用del语句删除元素、remove动作删除列表中某一个值(只能一个),如下所示: > 列表.append(元素) #添加元素进列表尾 列表.remove(值) #删除列表中的值一次 del 元素 #在内存中删除元素 </code></pre> <p>a=[1,2,3,4,5] #定义5个元素的列表 del a[0] print('删除a第0个:',a) a.append(5) print('添加5,a:',a) a.remove(5) #只能删除一次5 print('删除数值5,a:',a)</p> <pre><code> 运行的结果如下: py3tb
删除a第0个: [2, 3, 4, 5]
添加5,a: [2, 3, 4, 5, 5]
删除数值5,a: [2, 3, 4, 5]

大家可能发现,除了del语句比较特殊,其它append和remove动作在运行时都需要把列表变量放在小数点前,现在大家可以理解为这是 _列表_的专门的动作,这种写法表示:调用列表class类的方法函数,大家要记往。

del 语句是内置命令,不光应用于列表它表示在内存中删除销毁对象,任何变量都可以被”销毁”

2.4 插入弹出操作

弹出pop操作也是列表的专门的”方法”,表示从列表中的某个位置删除对象,但是会同时返回这个对象,就好像子弹从弹匣中弹出来一样。同样插入insert操作也可以基于位置(前文remove是基于数值而不是位置)把新元素插入列表。

列表.pop(位置)#不写就默认最后一个
列表.insert(位置,元素) #把元素插入位置当中

python;gutter:true; a=[2,3,4,5,5] b = a.pop(3) print('弹出第3个元素,a:',a,',弹出了:',b)</p> <h1>第0个位置前插入字符"首"</h1> <p>a.insert(0,'首') print('插入a:',a)</p> <pre><code> 上述代码的运行结果如下:<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>The running result of the above code is as follows:</font>*</details>
弹出第3个元素,a: [2, 3, 4] ,弹出了: 5
插入a: [‘首’, 2, 3, 4]

3、元组tuple

元组可看成是”只读”的列表,它使用成对的圆括号()来定义,其中的元素都有0开始的位置,但只能读取而不能添加和删除其中的元素。这就类似于Sam在学院中看到的珍贵特定古籍书柜,柜中的书籍都是固定位置的,只能取阅而不能更新新的书籍进来,也不允许把书籍抽走放在别处或是销毁。

在Sam学院中把书籍位置使用(柜号,行号,列号)的元组来表示,我们看示例:

python;gutter:true;</p> <h1>Sam学院中把书籍位置使用(柜号,行号,列号)来表示 :</h1> <p>book_a_loc = (1,23,34) book_b_loc = (5,10,90) print('a书位置:',book_a_loc) print('a书行列:',book_a_loc[1:]) print('b书行号:',book_b_loc[1])</p> <h1>试删除第1个元素会出错</h1> <p>del book_a_loc[0]</p> <pre><code> 运行后的结果如下: </code></pre> <p>a书位置: (1, 23, 34) a书行列: (23, 34) b书行号: 10 Traceback (most recent call last): File "/....../demo2.py", line 7, in del book_a_loc[0] TypeError: 'tuple' object doesn't support item deletion</p> <pre><code> </code></pre> <p>错误信息提示我们,tuple元组类型不支持元素删除。</p> <pre><code> > 嘿嘿:Sam问道如果把列表加入元组呢,到底可编辑还是不可编辑? 结论是元组不可编辑,但其中的元素列表是可编辑的。<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>The conclusion is that tuples are not editable, but the list of elements in them is editable.</font>*</details> 具体交给读者去试试吧! ## 4、集合set 在学院中有一些正在借阅当中的书籍,通常被学士位乱堆在桌子上,也没有顺序,这种在python中没有顺序的元素集叫"集合",我们定义空集合时使用set(),而不用{}因为空花括号表示空的字典,我们定义集合时使用{元素1,....,}来表示。它有如下的特点: * 无序 * 不重复
s = {‘男’,’男’,’女’}
print(s)

在上面的定义中,我们有重复的男性,但打印出来的值只有两个:

[En]

In the above definition, we have duplicate males, but there are only two values printed out:

{'女', '男'}

集合类型在数学上有交并差补运算,同样在python当中也有运算符分别是&|-^,具体示例如下图:

n1 = {'张','王'}
n2 = {'何','王'}
print('合',n1&n2,'并',n1|n2,'差',n1-n2,'补',n1^n2)

运行结果如下:

合 {'王'} 并 {'何', '张', '王'} 差 {'张'} 补 {'何', '张'}

5、字典dict

就像Sam经常使用的字典类书籍,Sam想查词dragonglass(龙晶石)就从dragonglass索引去找内容。python有一种数据结构dict可以实现上述根据索引来查询的功能,dict当中的元素由冒号分隔的两部分组成,前部分当索引的叫关键字key(个人觉得叫钥匙更形象),当内容的叫value(值)。

词典中的元素没有数字位置,只能通过关键字获取。

[En]

The elements in the dictionary have no numeric position and can only be obtained through keywords.

1 #字典定义分隔符{},后可用回车
 2 d = {
 3      'dragon':'一种古老的动物',
 4      '龙晶':'使用龙的骨骼形成化石晶体',
 5      }
 6 #查询 龙晶
 7 print('龙晶',d['龙晶'])
 8 #插入元素
 9 d['丹尼莉丝'] = '坦格利安家族的风暴降生丹尼莉丝坦格利安一世、不焚者、弥林女王、安达尔人和先民的女王、七国统治者暨全境守护者、草原上的卡丽熙、打碎镣铐者以及龙之母!'
10 #删除dragon
11 d.pop('dragon')
12 #打印整个字典
13 print('d的内容',d)

运行后,结果如下:

龙晶 使用龙的骨骼形成化石晶体
d的内容 {'龙晶': '使用龙的骨骼形成化石晶体', '丹尼莉丝': '坦格利安家族的风暴降生丹尼莉丝坦格利安一世、不焚者、弥林女王、安达尔人和先民的女王、七国统治者暨全境守护者、草原上的卡丽熙、打碎镣铐者以及龙之母!'}
通过对字典的熟练运用,SAM找到了龙晶矿的所在地,他决定把这个消息告诉SNOW,帮助七国打赢夜王之战,关注后续发展哦。

恭喜你又进步了一点,关注并跟随小牛叔,摆正编程入门姿式!

Original: https://www.cnblogs.com/dosboy/p/15828878.html
Author: dosboy
Title: Python趣味入门8:集合变量-列表、集合、元组、字典

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/510176/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球