python三种组合数据类型--集合类型、序列类型、字典类型

集合

集合是多个元素的无序组合

集合元素之间无序

集合由不可变数据类型元素组成,如整数、浮点数、复数,字符串、元组类型等

集合用大括号{}组成,元素之间用逗号隔开

每个元素唯一,不存在相同元素

 

一、集合间操作

并(S|T )

S-T

S&T

S^T  返回一个新集合,包括集合S和T中的非相同元素

S<=T或S<T

S>=T或S>T

集合处理方法

S.add(x)

S.discard(x)

S.remove(x)

S.clear()

S.pop()

S.copy()

len(S)

x in S

x not in S

set(x)   将其他类型的元素转变为集合类型

集合类型应用场景

1,包含关系的比较   

2,数据去重 例 ls=["p","p","y","y",123]   s=set(ls)   lt=list(s)

二、序列类型

序列是一维向量元素,元素类型可以不同,元素间序号引导

延伸:字符串类型、元祖类型、列表类型。

序列处理函数及方法:

6个操作符

x in S

x not in S

s+t

s*n或n*s

s[i]

s[i:j]或S[i,j,k]

5个函数和方法

len(s)

min(s)

max(s)

s.index(x)或s.index(x,i,j)     返回序列s从i开始到j位置中第一次出现元素x的位置

s.count(x)   s中出现x的总次数

元祖类型及操作

元祖可以被看做是不能改变的列表。

元祖是一种序列类型一旦创建就不能修改,使用小括号()或tuple创建,元素间用逗号隔开,

元祖类型继承了序列类型的全部通用操作

因为元祖创建后不能修改,因此没有特殊操作

列表类型

列表是一种数据类型,创建后可以随意修改

使用中括号[]或list创建

列表类型的操作函数及方法

ls[i]=x

ls[i:j:k]=lt

del ls[i]

del ls[i:j:k]

ls+=lt   更新列表ls,将列表lt元素增加到列表ls中

ls*=n   更新列表ls,其元素重复n次

ls.append(x)    表示在列表

ls.clear()

ls.copy()

ls.insert(i,x)

ls.pop(i)   取出第i位置的元素取出并删除该元素

ls.remove(x)   将列表ls中出现的第一个元素x删除

ls.reverse()将列表ls中的元素反转

访问列表中所有元素

如果列表中有上百万个元素,你只需要三行就能访问到所有的元素。

dogs=['border collie','australian cattle dog','lamdba']

for dog in dogs:

      print(dog)b

穷举列表

循环一个列表的时候,你可能想获取当前元素的索引。你可以采用list.index(value)的方式获取,或者采取一个更简单的方法。enumerate()函数可以帮助你跟踪每项元素的索引,如下所示:

dogs=['border collie','australian cattle dog','lamdba']

for index,dog in enumerate(dogs):

place=str(index)

print("place:"+place+"dog:"+dog)

列表推导式

数字列表的推导式

回顾上节知识,我们可以创建一个包含前10个数字的列表,如下所示:

 

1

2

3

4

5

6

7

8

9

10

11

12

# Store the first ten square numbers in a list.

# Make an empty list that will hold our square numbers.

squares = []

# Go through the first ten numbers, square them, and add them to our list.

for number in range(1,11):

new_square = number**2

squares.append(new_square)

# Show that our list is correct.

for square in squares:

print(square)

上述代码中我们实现了创建包含10个数字的列表,对每个数字作平方操作并将它们存储进新的数组的功能。代码略显冗长,我们可以省略 for 循环中的 new_square 参数,简化代码。使用列表推导式就可以进一步简化代码,如下所示:

 

1

2

3

4

5

6

# Store the first ten square numbers in a list.

squares = [number**2 for number in range(1,11)]

# Show that our list is correct.

for square in squares:

print(square)

平方操作和生成新列表的过程都浓缩进了一行代码。你是不是已经晕头转向了,让我们来看看这行代码发生了什么。

首先我们定义了一个列表,名字为 squares 。

接下来看看列表中括号中的代码:

for number in range(1, 11)

它在1-10之间创建一个循环,把每个数字存储到变量 number 中。接下来我们看一看对每次循环中的 number 作了哪些操作。

 number**2

每个 number 都作了平方操作,并将结果存储在了定义好的队列中。我们可以用如下语言来阅读这行代码:

squares = [raise number to the second power, for each number in the range 1-10]、

其他例子

上个例子是对数字作平方操作,下列代码是对数字作乘操作,仔细阅读代码,体会数字列表表达式的用法。

 

1

2

3

4

5

6

7

8

9

10

# Make an empty list that will hold the even numbers.

evens = []

# Loop through the numbers 1-10, double each one, and add it to our list.

for number in range(1,11):

evens.append(number*2)

# Show that our list is correct:

for even in evens:

print(even)

简化后代码如下所示:

 

1

2

3

4

5

# Make a list of the first ten even numbers.

evens = [number*2 for number in range(1,11)]

for even in evens:

print(even)

非数字列表的推导式

我们也可以在非数字列表中运用推导式。在下面的例子中,我们会创建一个非数字列表,然后利用推导式生成一个新的列表。不运用推导式的源代码如下所示:

 

1

2

3

4

5

6

7

8

9

10

11

# Consider some students.

students = ['bernice', 'aaron', 'cody']

# Let's turn them into great students.

great_students = []

for student in students:

great_students.append(student.title() + " the great!")

# Let's greet each great student.

for great_student in great_students:

print("Hello, " + great_student)

我们想写下如下所示的推导式:

great_students = [add 'the great' to each student, for each student in the list of students]

代码如下所示:

 

1

2

3

4

5

6

7

8

9

# Consider some students.

students = ['bernice', 'aaron', 'cody']

# Let's turn them into great students.

great_students = [student.title() + " the great!" for student in students]

# Let's greet each great student.

for great_student in great_students:

print("Hello, " + great_student)

动手试一试

 

 

 

 

三、字典类型

键值对

采用大括号和dict()创建,键值对间用:分割

字典处理函数及方法

del d[k]  删除字典d中键k对应的数据值

k in d  判断键k是否在字典中,如果在返回True,否则False

d.keys()  返回字典d中所有的键信息

d.values()

d.items()

d.get(k,<default>)    键K存在,则返回相应值,不在则返回<default>

d.pop(k,<default>)    键K存在,则取出相应值,不在则返回<default>

d.popitem()   随机从字典中取出一个键值对,以元祖形式返回

d.clear()

len(d)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值