Python学习第七天

元组

内置数据结构之一,是一个不可变序列,用()表示。

元组的创建

  1. 直接使用()
t = (10, 20, 30, 40)
print(t)
print(type(t))

####
(10, 20, 30, 40)
<class 'tuple'>
  1. 使用内置函数tuple()
t1 = tuple((10,))
print(t1)

t2 = tuple('hello')
print(t2)

t3 = tuple([10, 20, 30, 40])
print(t3)

t4 = tuple({"张三": 100, "李四": 98})
print(t4)

####
(10,)
('h', 'e', 'l', 'l', 'o')
(10, 20, 30, 40)
('张三', '李四')
  1. 当只有一个元素时
    使用小括号时需要加一个,
t = (10,)
print(t)
  1. 空元组
t1 = ()
print(t1)

t2 = tuple()
print(t2)

####
()
()

元组的遍历

可以使用索引进行遍历,也可以使用for..in遍历。

t = (20, 'python', [1, 2, 3])

for item in t:
    print(item)

####
20
python
[1, 2, 3]

集合

内置数据结构,与列表、字典一样属于可变序列,是没有value的字典,集合中的元素不允许重复。

集合的创建方式

  1. 使用{}
s = {1, 2, 3, 4}
print(s)
print(type(s))

####
{1, 2, 3, 4}
<class 'set'>
  1. 使用内置函数set()
l = [1, 2, 3, 3, 2, 1]
s = set(l)
print(s)

####
{1, 2, 3}

定义空集合,使用s = set()

集合的操作

  1. 判断元素
    使用in'、not in`进行判断。
s = {1, 3, 5, 7, 9}
print(3 in s)
print(4 not in s)

####
True
True
  1. 增加元素
    a. 使用add()方法增加一个元素
s = {1, 3, 5, 7, 9}
s.add('hello')
print(s)

####
{1, 3, 5, 7, 9, 'hello'}

b. 使用update()方法增加多个元素

s = {1, 3, 5, 7, 9}
s.update([1, 2, 3, 4, 5, 6, 7, 8])
print(s)

####
{1, 2, 3, 4, 5, 6, 7, 8, 9}
  1. 删除元素
    a. 调用remove()方法一次删除一个指定元素,若不存在则抛出异常。
s = {1, 3, 5, 7, 9}
s.remove(2)
print(s)

s.remove(1)
print(s)

####
Traceback (most recent call last):
KeyError: 2

{3, 5, 7, 9}

b. 调用discard()方法一次删除一个指定元素,弱不存在不抛出异常。

s = {1, 3, 5, 7, 9}
s.discard(1)
print(s)

s.discard(2)
print(s)

####
{3, 5, 7, 9}
{3, 5, 7, 9}

c. 调用pop()方法,删除一个任意元素。

s = {1, 3, 5, 7, 9}
s.pop()
print(s)
s.pop()
print(s)

####
{3, 5, 7, 9}
{5, 7, 9}

d. 调用clear()方法,清空集合。

s = {1, 3, 5, 7, 9}
print(s)
s.clear()
print(s)

####
{1, 3, 5, 7, 9}
set()

可以看到空集合并不用{}来表示,而是使用set()来表示。

集合间的关系

  1. 判断集合相等
    使用==!=来判断。
s1 = {1, 3, 5}
s2 = {1, 3, 5}
s3 = {2, 3, 4}
print(s1 == s2)
print(s1 != s3)

####
True
True
  1. 判断集合间的子集关系
    调用issubset()方法,,这图B是A的子集。
s1 = {1, 2, 3, 4, 5}
s2 = {1, 3, 5}
print(s1.issubset(s2))  # s1不是s2的子集
print(s2.issubset(s1))  # s2是s1的子集

####
False
True
  1. 判断集合间的超集关系
    调用issuperset()方法来判断,还是上图,A是B的超集。
s1 = {1, 2, 3, 4, 5}
s2 = {1, 3, 5}
print(s1.issuperset(s2))  # s1是s2的超集
print(s2.issuperset(s1))  # s2不是s1的超集

####
True
False
  1. 判断集合间的相交关系
    调用isdisjoint()方法来判断,
    有交集,返回False;没有交集返回True
s1 = {1, 2, 3, 4, 5}
s2 = {1, 2, 3}
s3 = {6, 7, 8}
print(s1.isdisjoint(s2))  # s1与s2有交集
print(s1.isdisjoint(s3))  # s1与s3没有交集

####
False
True

集合的数据操作

不影响原集合

  1. 交集
    使用intersection()方法,或者使用&,如s1 & s2就是\(s1∩s2\)
s1 = {1, 3, 5, 7, 8}
s2 = {3, 4, 5}
print(s1.intersection(s2))

####
{3, 5}
  1. 并集
    使用union方法,或者使用|,如s1 | s2就是\(s1∪s2\)
s1 = {1, 3, 5, 7, 8}
s2 = {3, 4, 5}
print(s1.union(s2))

####
{1, 3, 4, 5, 7, 8}
  1. 差集
    使用difference()方法,或者使用-,如s1 - s2
    集合\(A,B\)\(A - B\)
s1 = {1, 3, 5, 7, 8}
s2 = {3, 4, 5}
print(s1.difference(s2))  # s1 - s2  {1,7,8}
print(s2.difference(s1))  # s2 - s1    {4}

####
{8, 1, 7}
{4}
  1. 对称差集
    使用symmetric_difference方法,或者使用^,如s1 ^ s2
    集合\(A,B\)\(A∪B - A∩B\)
s1 = {1, 3, 5, 7, 8}
s2 = {3, 4, 5}
print(s1.symmetric_difference(s2))

####
{1, 4, 7, 8}

集合生成式

跟列表生成式一样,把[]改成{}即可。

s = {i * i for i in range(1, 5)}
print(s)

####
{16, 1, 4, 9}

posted @ 2021-02-02 19:35  sxhyyq  阅读(33)  评论(0编辑  收藏  举报