【Python】元组与集合

一、元组

  • Python 的元组与列表类似,不同之处在于元组的元素不能修改

  • 元组使用小括号,列表使用方括号。

  • 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可

定义空元组

print(tuple())
print(())

# 元组是一个不可变的序列,没有增加,修改和删除的对应方法,不像列表有那么多的方法;

#元组中只包含一个元素时,需要在元素后面添加逗号;

print(type((1)))
print(type((1,)))
print(type(('1')))
print(type(('1',)))
【Python】元组与集合_第1张图片

定义非空元组

name_tuple = ('张三', '李四', '王五', '啦啦啦', '王五')
print(name_tuple.count('王五'))
print(name_tuple[0])
print(name_tuple[1:4])
for i in name_tuple:
    i = i.replace('啦啦啦', '宋小宝')
print(name_tuple)
因为是一个不可变的序列,所以不能修改

# 可以通过元组推导式生成元组 默认生成一个生成器对象,需要使用tuple方法转化成元组

print(x for x in range(1, 11))
print(tuple((x for x in range(1, 11))))

公共功能

1. 相加,两个元组相加获取生成一个新的元组。

data = ("赵四","刘能") + ("宋晓峰","范德彪")
print(data) 

v1 = ("赵四","刘能")
v2 = ("宋晓峰","范德彪")
v3 = v1 + v2
print(v3) 

2. 相乘,元组*整型 将元组中的元素再创建N份并生成一个新的元组。

data = ("赵四","刘能") * 2
print(data) 
v1 = ("赵四","刘能")
v2 = v1 * 2
print(v1) 
print(v2)
【Python】元组与集合_第2张图片

3. 获取长度

user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
print( len(user_list) )

4. 索引

user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
print( user_list[0] )
print( user_list[2] )
print( user_list[3] )
【Python】元组与集合_第3张图片

5. 切片

user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
print( user_list[0:2] )
print( user_list[1:] )
print( user_list[:-1] )
【Python】元组与集合_第4张图片

6. 步长

user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
print( user_list[1:4:2] )
print( user_list[0::2] )
print( user_list[1::2] )
print( user_list[4:1:-1] )
【Python】元组与集合_第5张图片
# 字符串 & 元组。
user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
data = user_list[::-1]
# 列表
user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
data = user_list[::-1]
user_list.reverse()
print(user_list)

7. for循环

user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
for item in user_list:
    print(item)
user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
【Python】元组与集合_第6张图片

目前:只有 str、list、tuple 可以被for循环。 "xxx" [11,22,33] (111,22,33)

# len + range + for + 索引
user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
for index in range(len(user_list)):
item = user_list[index]
print(item)

# 字符串和列表可以转换为元组

name = 'nebula'
name_list = ['china', 'usa', 'russia']
print(tuple(name))
print(tuple(name_list))

# 元组嵌套其他数据类型 如果嵌套元素为可变类型 比如列表,则其值可以被修改 ;

li = ("lvpengfei", [11,22,(88,99,100,),33],  "大胖",  ("ritian", "barry",),  "wenzhou")
li[1][0] = 12
print(li)
li[1][1] = 23
print(li)
li[1].append(44)
print(li)

二、集合

  • 集合(set)是一个无序的不重复元素序列

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

  • 创建格式:

parame = {value01,value02,...}
或者
set(value)

set1 = {11, 22, 33, 44, 55, 55, 33}
print(set1)
输出一个集合会自动去重;

集合可以实现对列表进行去重

list1 = [1, 2, 2, 3, 3, 4, 4]
print(list(set(list1)))

添加元组元素

set1 = {11, 22, 33, 44, 55, 55, 33}

set1.add(23)
print(set1)
添加元素或者删除元素都是在任意位置添加或删除;
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。

删除元组元素

pop方法

set1 = {11, 22, 33, 44, 55, 55, 33}

set1.pop()
print(set1)
使用pop方法删除元组,是删除任意元素;

remove方法

set1 = {11, 22, 33, 44, 55, 55, 33}

set1.remove(11)
print(set1)
set1.remove(888)
print(set1)
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。

discard方法

set1 = {11, 22, 33, 44, 55, 55, 33}

set1.discard(888)
print(set1)
此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误,输出原集合,什么也不做;

计算集合元素个数

len(s)方法

set1 = {11, 22, 33, 44, 55, 55, 33}

print(len(set1))

清空集合

s.clear()

set1 = {11, 22, 33, 44, 55, 55, 33}
set1.clear()
print(set1)

判断元素是否在集合中存在

thisset = {"Google", "Runoob", "Taobao"}
print("Runoob" in thisset)

print("Facebook" in thisset)

集合内置方法完整列表

方法

描述

add()

为集合添加元素

clear()

移除集合中的所有元素

copy()

拷贝一个集合

difference()

返回多个集合的差集

difference_update()

移除集合中的元素,该元素在指定的集合也存在。

discard()

删除集合中指定的元素

intersection()

返回集合的交集

intersection_update()

返回集合的交集。

isdisjoint()

判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。

issubset()

判断指定集合是否为该方法参数集合的子集。

issuperset()

判断该方法的参数集合是否为指定集合的子集

pop()

随机移除元素

remove()

移除指定元素

symmetric_difference()

返回两个集合中不重复的元素集合。

symmetric_difference_update()

移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

union()

返回两个集合的并集

update()

给集合添加元素


# 使用其他集合更新到自己的集合中,相同元素会去重

set1 = {11, 22, 33, 44, 55, 55, 33}
set3 = {111, 222, 333, 55, 44}
set1.update(set3)
print(set1)

# 子集合的判断

set1 = {11, 22, 33, 44, 55, 55, 33}
set3 = {111, 222, 333, 55, 44}

print(set3.issubset(set1))

# 本集合的内容不在另一个集合中的元素组成一个新集合输出

set1 = {11, 22, 33, 44, 55, 55, 33}
set3 = {111, 222, 333, 55, 44}


print(set3.difference(set1))

# 列表不能被hash  所以不能作为集合的元素
set4 = {[1, 2, 4], 1, 2}
print(set4)

# 集合不能被hash  所以不能作为集合元素
set5 = {{1,3,4},2,4}
print(set5)

set6 = {1, 'aaa', True, (1, 2)}
print(set6)  #1和True被认为是一个值;0和False被认为是一个值;

你可能感兴趣的:(Python,python,开发语言)