导航:首页 > 编程语言 > python集合代码大全

python集合代码大全

发布时间:2023-04-13 13:11:15

1. python有趣的编程代码

classPoint:
row=0
col=0
def__init__(self,row,col):
self.row=row
self.col=col

def(self):
returnPoint(row=self.row,col=self.col)


#初始框架
importpygame
importrandom

#初始化
pygame.init()
W=800
H=600

ROW=30
COL=40

size=(W,H)
window=pygame.display.set_mode(size)
pygame.display.set_caption('贪吃蛇')

bg_color=(255,255,255)
snake_color=(200,200,200)

head=Point(row=int(ROW/2),col=int(COL/2))
head_color=(0,128,128)

snakes=[
Point(row=head.row,col=head.col+1),
Point(row=head.row,col=head.col+2),
Point(row=head.row,col=head.col+3)
]

#生成食物
defgen_food():
while1:
pos=Point(row=random.randint(0,ROW-1),col=random.randint(0,COL-1))

#
is_coll=False

#是否跟蛇碰上了
ifhead.row==pos.rowandhead.col==pos.col:
is_coll=True

#蛇身子
forsnakeinsnakes:
ifsnake.row==pos.rowandsnake.col==pos.col:
is_coll=True
break

ifnotis_coll:
break

returnpos


#定义坐标


food=gen_food()
food_color=(255,255,0)direct='left'#left,right,up,down

#
defrect(point,color):
cell_width=W/COL
cell_height=H/ROW

left=point.col*cell_width
top=point.row*cell_height

pygame.draw.rect(
window,color,
(left,top,cell_width,cell_height)
)
pass

#游戏循环
quit=True
clock=pygame.time.Clock()
whilequit:
#处理事件
foreventinpygame.event.get():
ifevent.type==pygame.QUIT:
quit=False
elifevent.type==pygame.KEYDOWN:
ifevent.key==273orevent.key==119:
ifdirect=='left'ordirect=='right':
direct='up'
elifevent.key==274orevent.key==115:
ifdirect=='left'ordirect=='right':
direct='down'
elifevent.key==276orevent.key==97:
ifdirect=='up'ordirect=='down':
direct='left'
elifevent.key==275orevent.key==100:
ifdirect=='up'ordirect=='down':
direct='right'

#吃东西
eat=(head.row==food.rowandhead.col==food.col)

#重新产生食物
ifeat:
food=gen_food()

#处理身子
#1.把原来的头,插入到snakes的头上
snakes.insert(0,head.())
#2.把snakes的最后一个删掉
ifnoteat:
snakes.pop()

#移动
ifdirect=='left':
head.col-=1
elifdirect=='right':
head.col+=1
elifdirect=='up':
head.row-=1
elifdirect=='down':
head.row+=1

#检测
dead=False
#1.撞墙
ifhead.col<0orhead.row<0orhead.col>=COLorhead.row>=ROW:
dead=True

#2.撞自己
forsnakeinsnakes:
ifhead.col==snake.colandhead.row==snake.row:
dead=True
break

ifdead:
print('死了')
quit=False

#渲染——画出来
#背景
pygame.draw.rect(window,bg_color,(0,0,W,H))

#蛇头
forsnakeinsnakes:
rect(snake,snake_color)
rect(head,head_color)
rect(food,food_color)

#
pygame.display.flip()

#设置帧频(速度)
clock.tick(8)

#收尾工作

这是一个简易版贪吃蛇的代码,虽然结构简单,但是该有的功能都是完整的,可玩性也不错

2. Python的集合介绍

和列表类似,集合也是一个数据集合,其也不要求元素的类型一致。但是集合有下面两个特点:

•集合内元素唯一。如不可以用1、2、1、1组成集合,因为其包含重复的1。

•集合是无序的,添加元素时不能指定位置,删除元素时也不能通过指定位置,只能通过指定值。当然也不能通过位置来定位某个元素。

1、创建集合

我们可以从列表创建集合,将列表中的元素都加入到集合中,如果有重复的元素就仅保留一个。

a = set([1, 1, 3])

print(a)#输出结果:set([1, 3])     

也可以从元组、字典和其他集合构建集合。比如:

a = set((0, 1, 2, 3, 3, 2))   

使用的是字典的键来构建集合,字典的值没有被使用到,比如:

a = set({1:10, 2:20, 3:30})

从字符串构建集合,其每个字符都成为集合的一个元素,比如:

a = set("abcdefabc") 

输出结果:a={'c', 'e', 'f', 'b', 'd', 'a'}

另外一个集合构建集合,比如:

a = set([1, 2, 3]) 

b = set(a)  输出结果:b={1, 2, 3}

当然也可以构造一个空的集合,使用的方法是set()。空集合没有任何元素,比如:

a = set()

1.添加元——add(值)

该函数只能添加一个元素。

如果添加的元素已经在集合中存在,那么不会发生任何变化。

2.扔掉元素——discard(值)

该函数删除集合中指定的值对应的元素。

如果指定值在集合中不存在,则不做任何操作。

3.删除指定值——remove(值)

该函数和discard()的不同之处在于,如果指定的值在集合中不存在,会抛出异常。

4.清空所有元素——clear()

该函数扔掉所有的元素。执行完该函数后,该集合将变成一个空的集合。

a.clear()

5.删除第一个元素——pop()

如果集合中有元素,则返回值为删除掉的元素的值。

如果集合为空,则抛出异常。

6.得到差集——difference(集合对象)

该函数返回一个新的集合,该集合包含所有属于a而不属于b的元素,如图所示。该操作不会改变原始集合a或者b的内容。

7.差集操作符(-)

该操作符和difference()类似,返回一个新的集合,该集合包含所有属于a而不属于b的元素。该操作不会改变原始输入集合a或者b的内容。

8.从集合中删除另一个集合中存在的元素——difference_update(集合对象)

该函数和difference()的不同是操作数a会被修改,而且没有返回值。

9.得到两个集合的交集——intersection(集合)

该函数返回所有的同时属于集合a和集合b的元素组成的集合,即返回的是一个集合,该集合的所有元素都同时属于集合a和b,如图所示。输入集合a和b在该过程中没有发生任何改变。

10.交集操作符(&)

该操作符和intersection()的效果是一样的。

11.删除集合a中所有不属于集合b的元素——intersection_update(集合)

该函数也是求交集,与intersection()不同的是其修改原始输入集合,并且没有返回值。这也是为何该接口函数后面带有update字样,因为其更新了原来的输入集合。

12.是否存在交集——isdisjoint()

该函数判断是否存在这样的元素,其同时属于集合a和集合b。如果存在这样的元素,返回False;否则返回True。

13.并集——union(集合a,集合b)

该函数返回一个新的集合,该集合的元素要么属于输入集合a要么属于集合b。该操作不修改作为输入的两个集合a和b。如图表示该函数返回的集合的内容。

14.并集操作符(|)

该操作符和union()的效果是一样的。其返回一个并集,并且不修改输入集合的内容。

15.添加属于b而不属于a的元素——update()

该函数在集合a中添加属于b而不属于a的所有元素。该操作和union()不同的是,其修改了输入集合a,并且没有返回值。

16.外集——symmetric_difference()

外集就是由只属于集合a或者只属于集合b的元素组成的集合,如图所示。该操作返回一个新的集合,并且不修改原来的输入集合a和b。

17.外集操作符(^)

该操作符和symmetric_difference()的效果是一样的,也是返回一个新的集合,并且不会修改输入的集合a或者b。

18.a和b的并集减去a和b的交集——symmetric_difference_update()

该函数和symmetric_difference()的区别是,其修改了集合a的值,并且没有返回值。

19.是指定集合的子集吗——issubset()

a是b的子集就是说集合a的所有元素都属于集合b。

如果a等于b,那么a和b互为子集。

20.是指定集合的超集吗——issuperset()

a是b的超集合就是说集合b中的所有元素都属于集合a。

如果a是b的超集,那么b就是a的子集。

如果a等于b,那么它们互为子集,同时也互为超集。

3. python基础:内置函数、方法、转义字符大全

在写python程序时,常能用到一些函数和方法,总结一下,保存起来,方便查询。

一、内置函数

# abs()获取数字绝对值

# chr(i)数字转换为字符类型

# divmod() 获取两个数值的商和余数

# enumerate() 将可遍历序列组合为索引序列

# float()转换为浮点数

# format() 格式化字符串

# int()转换为整数 

# input() 接受用户输入内容

# len() 计算元素个数

# max() 返回最大值

# min() 返回最小值

# math.ceil() 返回指定数值的上舍整数

# open()打开文件并返回文件对象

# pow() 幂运算

# print()打印输出 

# range() 生成器

# reversed()反转所有元素

# round()四舍五入求值

# sorted()对可迭代对象进行排序 

# str() 转换为字符串

# sum() 求和

# set() 创建集合

# tuple() 将序列转换为元组

# zip()将可迭代对象打包成元组

二、方法

# append() 添加列表元素

# capitalize()首字母转换为大写 

# count()字符出现次数

# close() 关闭文件

# decode() 解码字符串

# dict.keys() 获取字典所有的键

# find()字符串首次出现的索引

# f.read() 读取文件内容

# dict.update()更新字典

# dict.items() 获取字典键/值对

# dict.get() 返回指定键的值

# encode() 编码字符串

# list.sort() 排序列表元素

# index() 元素首次出现的索引

# isdigit() 判断字符串是否只由数字组成

# isupper() 是否所有字母都为大写

# isnum() 判断字符串是否由字母和数字组成

# islower() 是否所有字母都为小写

# isdecimal() 检查字符串是否只包含十进制字符

# isalpha() 检测字符串是否为纯字母

# random.shuffle()随机排序

# random.sample()返回无重复随机数列表

# random.choice() 返回一个随机元素

# random.randint() 生成指定范围的随机整数

# random.randrange() 生成指定范围的指定递增基数随机整数

# pop() 删除列表中的元素

# remove()删除列表中的指定元素

# strip()去除空格

# lstrip()去除左侧空格

# rstrip() 去除右侧空格

# readline() 读取单行内容

# root.after() Tkinter中等待一段时间后再执行命令

# str.isnumeric() 验证字符串是否为数字(适用于Unicode)

# split()分割字符串

# ord() 将字符转换为整数

# replace() 字符串替换

# ljust() 左对齐填充

# rjust() 左对齐填充

# readlines() 读取所有行内容

# datetime.datetime.now() 返回指定时区的本地日期时间

# datetime.datetime.today() 获取当前本地日期的date对象

# datetime.utcnow() 返回当前UTC时间的datetime对象

# time.strptime()把时间字符串解析为元组

# time.time()返回当前时间的时间戳

# time.sleep()暂停指定秒数

# time.strftime() 返回指定格式的日期字符串

# time.mktime() 接收时间元组并返回时间戳

# os.getcwd() 获取当前工作目录

# os.listdir() 获取指定路径下的目录和文件列表

# os.makedirs() 递归创建目录

# os.rename() 重命名目录或文件

# os.path.exists() 判断路径是否存在

# upper() 全部转换为大写字母

# lower()  全部转换为小写字母

# sys.stdout.write() 标准输出打印

# sys.stdout.flush()刷新输出 

# shutil.() 复制单个文件到另一文件或目录

# write() 写入文件内容

# winsound.Beep() 打开电脑扬声器

# zfill() 在字符串前面填充0

三、循环语句

# break终止当前循环

# continue 终止本循环进入下一次循环

# with open() as file 以with语句打开文件(数据保存)

四、转义字符

\ 行尾续行符

\' 单引号 

\'' 双引号

\a 响铃

\e 转义

\n 换行

\t 横向制表符

\f 换页

\xyy 十六进制yy代表的字符

\\反斜杠符号

\b 退格

\000 空

\v 纵向制表符

\r 回车

\0yy 八进制yy代表的字符

\other 其他的字符以普通格式输出

4. 好玩的python代码示例

import random

while True:
# 出拳
punches = ['石头','剪刀','布']
computer_choice = random.choice(punches)
user_choice = ''
user_choice = input('请出拳:(石头、剪刀、布)') # 请用户输入选择
while user_choice not in punches: # 当用户输入错误,提示错误,重新输入
print('输入有误,请重新出拳')
user_choice = input()

# 亮拳
print('————战斗过程————')
print('电脑出了:%s' % computer_choice)
print('你出了:%s' % user_choice)

# 胜负
print('—————结果—————')
if user_choice == computer_choice: # 使用if进行条件判断
print('平局!')
# 电脑的选择有3种,索引位置分别是:0石头、1剪刀、2布。
# 假设在电脑索引位置上减1,对应:-1布,0石头,1剪刀,皆胜。
elif user_choice == punches[punches.index(computer_choice)-1]:
print('你赢了!')
else:
print('你输了!')
a1 = input('要继续游戏吗,请输入n退出,输入其他继续:') # 在 while True 循环中设置跳出条件。
if a1 == 'n':
break
else:
print('---------next game------- are you ready???')

5. Python中创建集合的方法有哪些呢

集合分为两种:可变集合(set)和不可变集合(frozenset),现在学习的是可变集合。

在Python中,有关于集合的操作主要有:集合的创建;集合的添加和删除;集合的交、并和差集运算。

今天先来学习如何创建集合。

集合的创建有两种方法:直接赋值法和set()函数法。

1、直接赋值法

和Python的其它序列一样,采用直接赋值法就可以直接创建一个集合,具体语法格式如下:

setname = {“element1”,“element2”,“element3”,……,“elementn”,}

从格式上看,和其它的序列创建方法基本一样,就是集合名setname直接使用赋值运算符等号“=”赋值,等号后面的元素内容使用英文半角的大括号“{ }”括起来,各个元素之间依然使用英文半角的逗号“,”分隔。

这里虽然和字典一样使用大括号“{ }”,但是只要记住字典的元素是由键值对组成的(详见前第62节内容),就完全可以区分所创建的是字典还是集合了。

6. python数据类型(集合)

    1.集合(set)是一个无序不重复元素的序列(意思是有重复的会自动删除,每次打印元素的位置不一定)

    2.基本功能是进行成员关系测试和删除重复元素

    3.可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典

    4.因为set存储的是无序集合,所以我们没法通过索引来访问。访问 set中的某个元素实际上就是判断一个元素是否在set中。

1.创建集合

s=set()#创建一个空集合

s1={1,2,3,'a','python'}

2.删除重复的元素

集合是一个无序不重复元素的序列(意思是有重复的会自动删除,每次打印元素的位置不一定)

3.成员关系测试(检测某个成员是否在集合中)

案例:从终端输入5位数,以空格隔开,把这5位数存入列表中,剔除重复的数据,打印出来

#提示,列表转集合,集合转列表

a=input("请输入5位数字:")

mylist=a.split()

print(mylist)

b=set(mylist)

c=list(b)

print(c)

4.集合常用操作

    1.添加元素

    2.删除元素

    3.删除整个集合

    4.获取集合的长度

    5.不支持改元素

集合操作-添加元素

格式:

集合.add(元素)

格式:

集合.update(元素)

区别:

add不能添加列表,update可以

update是将字符串中的拆分成字符进行追加

add,是当做整体追加在集合中

#案例:从终端输入一个数字就加入集合中,然后打印,又输入一个数字,然后打印,直到输入-1,退出输入

#然后打印最终的集合

ms=set()

while 1:

a=int(input("请输入一个数字:"))

if a==-1:

    break

    ms.add(a)

print(ms)

print(ms)

#案例:从终端输入一个字符串就加入集合中,然后打印,又输入一个字符串,然后打印,直到输入q,退出输入

#然后打印最终的集合,字符串要分开存储,如输入hello,存储的列表是{'h','e','l','0'}

ms=set()

while 1:

a=input("请输入一个字符串:")

if a=='q':

    break

    ms.update(a)

print(ms)

print(ms)

集合操作-删除元素及删除整个集合

格式:

集合.remove(元素)  # 元素如果不存在会引发KeyError

集合.discard(元素)  # 元素如果不存在不发生任何事

集合.pop()  # 集合元素是字符串类型时删除随机元素。 集合元素是其他数据类型时,删除左边第一个元素

del 集合名 #删除整个集合

#案例:有集合{1,2,3,'hello','world'},删除全部字符串,然后最左边第一个元素

a={1,2,3,'hello','world'}

a.discard("hello")

a.discard("world")

a.pop()

print(a)

集合操作-获取集合的长度

格式:

len(集合名)

#案例:有集合{1,2,3,4,'hello','a'},保留1个元素,其他的删除,假如元素个数不确定

s={1,2,3,4,'hello','a'}

for i  in range(len(s)-1):

            s.pop()

  print(s)

集合的集运算

集合的交集,并集,差集,对称差集的运算

{1,2,3,4}交集{4,5,6,7} -->4   交集(&)

{1,2,3,4}并集{4,5,6,7} ->1,2,3,4,5,6,7  并集(|)

{1,2,3,4}差集{4,5,6,7} ->1,2,3  差集(-)

{1,2,3,4}对称差集{4,5,6,7}->1,2,3,5,6,7 4同时出现在两个集合中,不选它 对称差集(^)

#案例:使用花括号和set创建各一个集合,然后对集合进行交、并、差、对称差运算

s={1,2,3,4,5,6}

s1=set([6,7,8,9,10])

print(s&s1)

print(s|s1)

print(s-s1)

print(s^s1)

7. Python的集合有哪些操作

集合是一个无序的,不重复的数据组合,它有着两个主要作用:去重以及关系测试。去重指的是当把一个列表变成了集合,其中重复的内容就自动的被去掉了

关系测试指的是,测试两组数据之间的交集、差集、并集等关系。

去重测试代码如下:

#创建一个列表--里面存在一些重复值

test_list = [1,2,3,4,2,2,3,4,3,2,3,4]

#利用集合将列表中重复的内容去掉

test_list = set(test_list)

#打印测试并且查看test_list被赋予新值后的数据类型print(test_list,type(test_list)) # {1, 2, 3, 4}

Tip:需要注意的是,集合和字典一样都是无序的。

获取交集需要使用集合中的方法intersection方法,获取两个集合中的交集代码如下:

#创建两个集合,并且获取集合的交集

test_list_01 = set(['YanYan','LiBai','LuLu','YangMi'])

test_list_02 = set(['YanYan','LiuDeHua','ZhangXueYou','LiBai'])

#在上面的两个集合中,存在相同的值,那么现在我们取出两个集合中的交集

test_intersection = test_list_01.intersection(test_list_02)print(test_intersection) # {'YanYan', 'LiBai'}

获取并集的方式需要采用集合中union方法,获取两个集合的并集代码如下:

#创建两个集合,并且获取集合的交集

test_list_01 =set(['YanYan','LiBai','LuLu','YangMi'])

test_list_02 =set(['YanYan','LiuDeHua','ZhangXueYou','LiBai'])

#采用集合中的union方法获取并集

test_list_union = test_list_01.union(test_list_02)

print(test_list_union) # {'LiBai', 'LuLu', 'ZhangXueYou', 'LiuDeHua', 'YangMi', 'YanYan'}

获取差集的方式要采用集合中的difference方法,获取两个集合的差集的代码如下所示:

#创建两个集合,并且获取集合的交集

test_list_01 = set(['YanYan','LiBai','LuLu','YangMi'])

test_list_02 = set(['YanYan','LiuDeHua','ZhangXueYou','LiBai'])

#使用集合中的difference方法来获取差集

test_difference = test_list_01.difference(test_list_02)

test_difference2 = test_list_02.difference(test_list_01)

print(test_difference) # {'LuLu', 'YangMi'}print(test_difference2) # {'ZhangXueYou', 'LiuDeHua'}

判断一个集合是否是另外一个集合的子集可以使用issubset()方法,同样,还可以使用issuperset()方法判断一个集合是否是另外一个集合的父级

代码如下:

#创建两个集合

list_set = set([1,2,3,4])

list_son = set([2,3])

#判断list_son是否是list_set的子集print(list_son.issubset(list_set)) # True#判断list_set是否是list_son的父级print(list_set.issuperset(list_son)) # True

对称差集(又有人称之为叫做反向差集),指的是取出两个集合中互相都没有的值取出放在一个集合中。

代码如下:

#创建两个集合

list_set_num1 = set([1,3,5,7,9])

list_set_num2 = set([2,3,4,6,9,10])

#获取两个集合的对称差集print(list_set_num1.symmetric_difference(list_set_num2)) # {1, 2, 4, 5, 6, 7, 10}

如果上述的难以理解的话,可以对对称差集理解为去掉两个集合中都存在的内容,将剩余的内容取到一个新的集合中。

除了上述的这些方法实现的关系功能之外,还有一个方法isdisjoint(),功能是判断两个集合中是否有相同的值,如果两个集合中没有相同的值(即没有交集),那么返回True

代码如下:

#创建集合

test_set_num1 = set([1,2,3,4])

test_set_num2 = set([5,6,7,8])

test_set_num3 = set([1,3,7,8])

#使用isdisjoint()方法来判断print(test_set_num1.isdisjoint(test_set_num2)) # Trueprint(test_set_num1.isdisjoint(test_set_num3)) # False

通过运算符来进行关系测试

在上面的应用中,主要是通过python中的方法进行的关系测试,那么在python中,除了使用方法以外,还可以使用关系运算符来进行关系测试。

实例代码如下:

test_list_01 =set(['YanYan','LiBai','LuLu','YangMi'])

test_list_02 =set(['YanYan','LiuDeHua','ZhangXueYou','LiBai'])

#获取交集&print(test_list_01 & test_list_02) # {'LiBai', 'YanYan'}

#获取并集|print(test_list_01 | test_list_02) # {'LuLu', 'LiBai', 'LiuDeHua', 'YanYan', 'ZhangXueYou', 'YangMi'}

#获取差集-print(test_list_01 - test_list_02) # {'LuLu', 'YangMi'}print(test_list_02 - test_list_01) # {'LiuDeHua', 'ZhangXueYou'}

#获取对称差集print(test_list_01 ^ test_list_02) # {'ZhangXueYou', 'YangMi', 'LuLu', 'LiuDeHua'}

集合的增删改查

添加

语法:Set.add()

代码如下:

#创建一个集合

test_set =set(['YanYan'])

#添加

test_set.add('LiBai') #添加一项

test_set.update(['LuLu','JingJing']) #一次性向集合中添加多项

#输出集合

print(test_set) #{'YanYan', 'LuLu', 'LiBai', 'JingJing'}

删除

删除集合中的某一个元素可以使用remove方法

代码如下:

#创建一个集合

test_set = set(['YanYan'])

#使用remove方法删除元素

test_set.remove('YanYan')print(test_set) # set()

删除项目除了使用remove以外,还可以使用pop()方法,但是pop()方法删除内容不能够指定,只是随机删除。

pop方法会把删除的内容返回,示例代码如下:

#创建一个集合

test_set = set([20,9,'a',1,2,3,4])print(test_set.pop()) # 1print(test_set.pop()) # 2print(test_set.pop()) # 3

删除元素还可以使用discard()方法,这个方法没有返回值,如果打印返回值的话会输出None

#创建一个集合

test_list = set([1,2,3,4,5])

#使用discard()方法删除--注意,discard()方法删除返回None,也就是没有返回值print(test_list.discard(3)) # None#此时原集合中的3已经被删除了print(test_list) # {1, 2, 4, 5}

查询

xins #判断x是否是s的成员

xnotins 判断x是否是s的成员

len(x) #查看x的长度

s <= t #测试是否s中的每一个元素都在t中

s >= t #测试是否t中的每一个元素都在s中


8. python基础代码是什么

代码:

defnot_empty(s):

returnsandlen(s。strip())>0

#returnsands。strip()

#如果直接单写s。strip()那么s如果是None,会报错,因为None没有strip方法。

#如果s是None,那么Noneand任何值都是False,直接返回false

#如果s非None,那么判定s。trip()是否为空。

这样子filter能过滤到None,"",""这样的值。

分成两部分看。第一部分是对长度进行序列。相当于就是range(5)他的结果就是。01234。第二部分就是具体的排序规则。排序规则是用nums的值进行排序,reverse没申明就是默认升序。就是用nums(0到4)的值进行排序,根据这个结果返回的一个range(5)的数组。

(8)python集合代码大全扩展阅读:

根据PEP的规定,必须使用4个空格来表示每级缩进。使用Tab字符和其它数目的空格虽然都可以编译通过,但不符合编码规范。支持Tab字符和其它数目的空格仅仅是为兼容很旧的的Python程序和某些有问题的编辑程序。

Python的函数支持递归、默认参数值、可变参数,但不支持函数重载。为了增强代码的可读性,可以在函数后书写“文档字符串”(Documentation Strings,或者简称docstrings),用于解释函数的作用、参数的类型与意义、返回值类型与取值范围等。可以使用内置函数help()打印出函数的使用帮助。

9. python集合

*事先说明:以下代码及结果来自本设备Python控制台,在不同设备上可能结果有区别,望自己尝试为妙


集合(set),是一种Python里的(class),

集合类似于列表(list)可更改可迭代(iterable),但是元素不重复

定义集合使用花括号{},例如

>>> s = {"apple", "banana", "strawberry", "watermelon"}

警告!!!如果使用空括号

>>> a = {}

>>> a.__class__

<class 'dict'>

a将成为一个字典

想要定义空集合,

请使用类名。

>>> a = set()

类名定义也可以把迭代转换为集合:

>>> b = set("abc")

>>> b

{'a', 'b', 'c'}

但是,保存后它是无序的。

>>> s

{'banana', 'watermelon', 'strawberry', 'apple'}

(结果仅供参考,在不同设备上略有不同)

下面介绍它的性质:

1. 可更改:

>>> s.add("lemon")

>>> s

{'banana', 'strawberry', 'lemon', 'watermelon', 'apple'}


>>> s.update(("orange", "grape"))

>>> s

{'banana', 'strawberry', 'orange', 'lemon', 'watermelon', 'apple', 'grape'}

警告!!!如果使用字符串,字符串也会被迭代:

>>> a = set()

>>> a.update("apple")

>>> a

{'a', 'p', 'e', 'l'}


>>> s.remove("lemon")

>>> s

{'banana', 'strawberry', 'orange', 'watermelon', 'apple', 'grape'}

>>> s.remove("cat")

Traceback (most recent call last):

File "<stdin>", line 1, in <mole>

s.remove("cat")

KeyError: 'cat'


>>> s.discard("grape")

>>> s

{'banana', 'strawberry', 'orange', 'watermelon', 'apple'}

>>> s.discard("dog")

>>> s

{'banana', 'strawberry', 'orange', 'watermelon', 'apple'}

2. 可迭代:

>>> for x in s:

... print(x)


banana

strawberry

orange

watermelon

apple


3. 可以使用 len 函数获取集合长度;

>>> len(s)

5

可以使用in关键字检查一个元素是否在集合内,将返回逻辑值(bool)

>>> "apple" in s

True

>>> "candy" in s

False

4.集合具有不重复性,因此它会自动去重:

>>> c = set("Hello World!")

>>> c

{' ', 'e', 'l', 'H', '!', 'r', 'W', 'o', 'd'}

5. 集合的运算

>>> d = set("abcdef")

>>> e = set("efghij")

>>> d

{'c', 'e', 'a', 'b', 'f', 'd'}

>>> e

{'h', 'e', 'g', 'j', 'f', 'i'}

>>> d - e # 集合d去掉集合e含有的元素,或者说集合d包含而集合e不包含的元素(不改变原集合)

{'a', 'b', 'd', 'c'}

>>> d | e # 集合d,e的所有元素

{'c', 'e', 'h', 'g', 'a', 'b', 'j', 'f', 'd', 'i'}

>>> d & e # 集合d,e都包含的元素

{'f', 'e'}

>>> d ^ e # 不同时出现在集合d, e中的元素

{'c', 'g', 'h', 'a', 'b', 'j', 'd', 'i'}

注意!!!

字符串、列表通用的+和*不适用于集合

>>> "abc" + "def"

'abcdef'

>>> [1, 2, 3] + [4, 5, 6]

[1, 2, 3, 4, 5, 6]

>>> d + e

Traceback (most recent call last):

File "<stdin>", line 1, in <mole>

d + e

TypeError: unsupported operand type(s) for +: 'set' and 'set'

>>> "a" * 5

'aaaaa'

>>> [1] * 3

[1, 1, 1]

>>> d*3

Traceback (most recent call last):

File "<stdin>", line 1, in <mole>

d * 2

TypeError: unsupported operand type(s) for *: 'set' and 'int'

(作者的小观点:既然集合是不能重复的,那么乘以、重复是没有意义的)

阅读全文

与python集合代码大全相关的资料

热点内容
安卓怎么换相机 浏览:933
华为相片文件夹怎么删除重复照片 浏览:312
plc编程视频教程大全 浏览:938
直播用哪个app播放背景音乐 浏览:850
点歌机系统app在哪里下载 浏览:609
javadate类型转换string 浏览:694
RPG游戏解压后乱码 浏览:988
无线通信的几个密钥算法 浏览:644
王者荣耀app数据修复在哪里 浏览:429
基于单片机饮水机温度控制系统的设计 浏览:455
c中委托被编译后的结构 浏览:152
飞燕app怎么注销账号 浏览:895
cad命令缩小 浏览:154
linux发展史 浏览:629
服务器选用什么CPU比较好 浏览:334
明星怎么宣传安卓 浏览:953
8255芯片编程 浏览:65
java文件bat运行 浏览:747
java常见笔试 浏览:529
360程序员模式 浏览:363