Python基础入门:集合与序列

学习目标:

掌握Python基础知识

学习内容:

1、 集合

2、 序列

学习产出:

1.1.集合的创建

先创建空集合再添加数据
直接把一堆元素用花括号括起来{元素1, 元素2, …, 元素n}。
重复元素在set中会被自动被过滤

#第一种
basket = set()
basket.add('apple')
basket.add('banana')
print(basket)  # {'banana', 'apple'}
#第二种
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket)  # {'banana', 'apple', 'pear', 'orange'}

使用set(value)工厂函数,把列表或元组转换成集合

a = set('abracadabra')
print(a)  
# {'r', 'b', 'd', 'c', 'a'}

b = set(("Google", "Lsgogroup", "Taobao", "Taobao"))
print(b)  
# {'Taobao', 'Lsgogroup', 'Google'}

c = set(["Google", "Lsgogroup", "Taobao", "Google"])
print(c)  
# {'Taobao', 'Lsgogroup', 'Google'}

集合的两个特点:无序 (unordered) 和唯一 (unique)。
由于 set 存储的是无序集合,所以我们不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值,但是可以判断一个元素是否在集合中

1.2.集合的查询

len()內建函数可以得到集合的大小。

s = set(['Google', 'Baidu', 'Taobao'])
print(len(s))  # 3

for循环可以遍历集合内容

s = set(['Google', 'Baidu', 'Taobao'])
for item in s:
    print(item)

in 或not in可以判断集合中的元素是否存在

s = set(['Google', 'Baidu', 'Taobao'])
print('Taobao' in s)  # True
print('Facebook' not in s)  # True
1.3.集合的内置方法

set.add(elmnt)用于给集合添加元素,
如果添加的元素在集合中已存在,则不执行任何操作。

fruits = {"apple", "banana", "cherry"}
fruits.add("orange")
print(fruits)  
# {'orange', 'cherry', 'banana', 'apple'}

fruits.add("apple")
print(fruits)  
# {'orange', 'cherry', 'banana', 'apple'}

set.update(set)用于修改当前集合,也可以添加新的元素或集合到当前集合中
如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。

x = {"apple", "banana", "cherry"}
y = {"google", "baidu", "apple"}
x.update(y)
print(x)
# {'cherry', 'banana', 'apple', 'google', 'baidu'}

y.update(["lsgo", "dreamtech"])
print(y)
# {'lsgo', 'baidu', 'dreamtech', 'apple', 'google'}

set.remove(item) 用于移除集合中的指定元素。
如果元素不存在,则会发生错误
set.discard(value)用于移除集合中的指定元素。
与remove不同的是,如果元素不存在,不会报错

fruits = {"apple", "banana", "cherry"}
fruits.remove("banana")
fruits.discard("banana")
print(fruits)  # {'apple', 'cherry'}
1.4.不可变集合

Python 提供了不能改变元素的集合的实现版本,即不能增加或删除元素,类型名叫frozenset。需要注意的是frozenset仍然可以进行集合操作,只是不能用带有update的方法

a = frozenset(range(10))  # 生成一个新的不可变集合
print(a)  
# frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})

b = frozenset('lsgogroup')
print(b)  
# frozenset({'g', 's', 'p', 'r', 'u', 'o', 'l'})
2.1.序列的概念

在 Python中,序列类型包括字符串、列表、元组、集合和字典,这些序列支持一些通用的操作,但比较特殊的是,集合和字典不支持索引、切片、相加和相乘操作。

2.2.序列的内置函数

list(sub) 把一个可迭代对象转换为列表

a = list()
print(a)  # []

b = 'I Love LsgoGroup'
b = list(b)
print(b)  
# ['I', ' ', 'L', 'o', 'v', 'e', ' ', 'L', 's', 'g', 'o', 'G', 'r', 'o', 'u', 'p']

c = (1, 1, 2, 3, 5, 8)
c = list(c)
print(c)  # [1, 1, 2, 3, 5, 8]

tuple(sub) 把一个可迭代对象转换为元组。

a = tuple()
print(a)  # ()

b = 'I Love LsgoGroup'
b = tuple(b)
print(b)  
# ('I', ' ', 'L', 'o', 'v', 'e', ' ', 'L', 's', 'g', 'o', 'G', 'r', 'o', 'u', 'p')

c = [1, 1, 2, 3, 5, 8]
c = tuple(c)
print(c)  # (1, 1, 2, 3, 5, 8)

str(obj) 把obj对象转换为字符串
len(s) 返回对象(字符、列表、元组等)长度或元素个数
max(sub)返回序列或者参数集合中的最大值
min(sub)返回序列或参数集合中的最小值

a = 123
a = str(a)
print(a)  # 123
print(len(a))  # 3
print(max(a))  # 3
print(min(a))  # 1

sum(iterable[, start=0]) 返回序列iterable与可选参数start的总和。

print(sum([1, 3, 5, 7, 9]))  # 25
print(sum([1, 3, 5, 7, 9], 10))  # 35
print(sum((1, 3, 5, 7, 9)))  # 25
print(sum((1, 3, 5, 7, 9), 20))  # 45

sorted(iterable, key=None, reverse=False) 对所有可迭代的对象进行排序操作。

x = [-8, 99, 3, 7, 83]
print(sorted(x))  # [-8, 3, 7, 83, 99]
print(sorted(x, reverse=True))  # [99, 83, 7, 3, -8]

reversed(seq) 函数返回一个反转的迭代器

s = 'lsgogroup'
x = reversed(s)
print(x)  # <reversed object at 0x000002507E8EC2C8>
print(list(x))

enumerate(sequence, [start=0])
于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

seasons = ['Spring', 'Summer', 'Fall', 'Winter']
a = list(enumerate(seasons))
print(a)  
# [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

zip(iter1 [,iter2 […]])
用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

a = [1, 2, 3]
b = [4, 5, 6]
c = [4, 5, 6, 7, 8]

zipped = zip(a, b)
print(list(zipped))  # [(1, 4), (2, 5), (3, 6)]
zipped = zip(a, c)
print(list(zipped))  # [(1, 4), (2, 5), (3, 6)]

数据及代码源于"AI训练营Python-阿里云天池"

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值