python中集合是序列吗,Python中的序列(上):字符串、列表、元组、集合、字典...

文章目录

@[toc]

Python中的序列(上):字符串、列表、元组、集合、字典

一、序列的生成与索引(基础)

1.1 字符串string

1.2 列表list

1.3 元组tuple

1.4 集合set

1.5 字典dict

二、序列的生成(进阶)

2.1 列表的循环生成

2.2 字典的合成

三、 序列之间的相互转换

Python中的序列(上):字符串、列表、元组、集合、字典

一、序列的生成与索引(基础)

1.1 字符串string

str1, str2 = 'hello world', "hello world"

# 引号支持换行

str3 = '''hello,

world'''

str4 = """hello,

world"""

# for生成字符串

开始和结束位置下标可以不写,默认第一个和最后有一个。可以为负数,表示倒数第几个。

索引的内容不包含结束位置下标的指示的内容

步长默认为1,可以不写,可以为负数,表示倒序

name = "风萧萧易兮水寒,壮士一去兮不复还"

print(name[0]) # 风

print(name[1:7:2]) # 萧易水

print(name[:3]) # 风萧萧

print(name[-2:4]) # 倒数第二个至第四个,不符合逻辑,输出为空

print(name[-4:-2]) # 兮不

print(name[::-2]) # (倒序,间隔为2 ) 还不去士,水易萧

print(name[-2:4:-1]) # 复不兮去一士壮,寒水(倒数第二个至第四个,因为逆序,符合逻辑)

1.2 列表list

列表类似数组,列表可以嵌套列表,类似多维数组。列表内的元素可以是不同的数据类型(类型支持数字,字符串,列表,元组,字典,集合等几乎所有数据类型)。

list1 = ['张三', 18, '北京', '文员']

listArray = [

['张三', 18, '北京', 'IT'],

'你好',

2020,

('张三', 18),

set('集合'),

{'type': '字典'}

]

列表的索引支持下标索引和切片

print(listArray[0][2]) # 嵌套时可以采用多维的方式

1.3 元组tuple

简单理解,元组是不可修改的列表。列表有的,元组都可以,但是元组的元素为单个时,后需要加“,” ,否则为该元素的类型。

t1 = ("张三", 18, "北京")

tArray = (

['张三', 18, '北京', 'IT'],

'你好',

2020,

('张三', 18),

set('集合'),

{'type': '字典'}

)

# 注意

t3 = ("张三",) # 类型为tuple

t4 = ("张三") # 类型为string

元组的索引与列表几乎一致。

1.4 集合set

集合不同于列表、元组之处在于集合是无序的,不重复的。所以集合的输出的是无序的,并且会过滤掉重复的元素。

集合可以用set()创建,也可以用类似于字典的{}创建,如果要创建空集合只能用set() 。

集合中的元素不支持元组、集合、字典。

s1 = set("你好18")

s2 = {'a', 'b', 'c', 'b'}

print(s1) # 输出无序的去掉重复元素的集合{'d', 'e', 'f', 'g', 'a', 'c'}

print(s2) # 输出无序的去掉重复元素的集合{'a', 'b', 'c'}

sArray = {

'你好',

2020,

('张三', 18),

}

集合是无序的,所以不能使用下标索引。

1.5 字典dict

字典的数据是以键值对形式存在的,所以字典能解决当序列被打乱后不能使用原下标索引的问题。

当然,键值的类型也可支持不同的数据类型,但一般没有意义,不再举例。

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

字典的索引是根据key找value,所以不能使用下标索引。而且字典的遍历也比较特殊。

print(dict1['name']) # 输出Tom

一些函数也可以进行索引:

print(dict1.get('name')) # Tom

print(dict1.get('id', 100)) # 如果没有key,则指定返回100

print(dict1.keys()) # dict_keys(['name', 'age', 'gender'])

print(dict1.values()) # dict_values(['Tom', 20, '男'])

print(dict1.items()) # dict_items([('name', 'Tom'), ('age', 20), ('gender', '男')])

字典的遍历:

# 遍历字典的元素,item是以元组的形式被输出

# ('name', 'Tom')

# ('age', 20)

# ('gender', '男')

for item in dict1.items():

print(item)

# 遍历字典的key

for key in dict1.keys():

print(key)

# 遍历字典的value

for value in dict1.values():

print(value)

# 遍历字典的键值对

for key, value in dict1.items():

print(f'{key}={value}')

如何提取字典中的目标数据?

dict3 = {'MBP': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}

提取上述电脑数量大于等于200的字典数据?

TagerDict3 = {key: value for key, value in dict3.items()

if value >= 200}

# TagerDict3 = {}

# for key, value in dict3.items():

# if value >= 200:

# TagerDict3[key] = value

print(TagerDict3) # {'MBP': 268, 'DELL': 201}

二、序列的生成(进阶)

2.1 列表的循环生成

循环生成一维列表

# 生成一维列表,range(start, end, step)是生成start到end范围内的step步长的数

list1 = [i for i in range(10)]

# 可以写成如下

# list1 = []

# for i in range(10):

# list1.append(i)

print(list1)

循环生成多维列表

# 生成二维列表

list2 = [(i, j) for i in range(1, 3) for j in range(3)]

# 可以写成如下

# list2 = []

# for i in range(1, 3):

# for j in range(3):

# list2.append((i, j))

print(list2)

2.2 字典的合成

# 生成字典

dict1 = {i: i**2 for i in range(1, 5)}

print(dict1)

# 合并两个列表为一个字典

listName = ['name', 'age', 'gender']

listValue = ['Tom', 20, 'man']

dict2 = {listName[i]: listValue[i] for i in range(len(listName))}

print(dict2)

三、 序列之间的相互转换

tuple() :将某个序列转换成元组

list1 = [10, 20, 30, 40, 50, 20]

s1 = {100, 200, 300, 400, 500}

print(tuple(list1))

print(tuple(s1))

list() :将某个序列转换成列表

t1 = ('a', 'b', 'c', 'd', 'e')

s1 = {100, 200, 300, 400, 500}

print(list(t1))

print(list(s1))

set() :将某个序列转换成集合

list1 = [10, 20, 30, 40, 50, 20]

t1 = ('a', 'b', 'c', 'd', 'e')

print(set(list1))

print(set(t1))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值