python中的数据结构:列表、字典、元组、集合

一、常用数据结构和数值类型

数据结构类型元素特点表现形式索引
List(列表)元素可变、有序、可重复、数据类型任意list = [ ]只接受位置索引
能切片查询
list[ 1 ]
Dictionary(字典)键值对
键唯一不可变,值不唯一可变
值数据类型任意
dict ={ key1:val1,—}只接受键索引
不能切片查询
dict[ key1 ]
Tuple(元组)稳固版列表
元素不可修改
tuple = ( )只接受位置索引
能切片查询
tuple[ 1 ]
Set(集合)元素无序、不重复、数据类型任意set = { }不能切片、不能被索引
String(字符串)
Numbers(数字)int(有符号整型)、
long(长整型,也可以代表八进制和十六进制)、
float(浮点型)、
complex(复数)
  • 数据结构的技巧(推导式)
#普通形式
a = []
for i in range(1,11):
	a.append(i)

#推导式(解析式)
b = [i for i in range(1,11)]

推导式的一些例子

a = [i**2 for i in range(1,10)]
c = [j+1 for j in range(1,10)]
k = [n for n in range(1,10) if n % 2 ==0] #返回偶数
z = [letter.lower() for letter in 'ABCDEFGHIGKLMN'] #全部小写

d = {i:i+1 for i in range(4)}
g = {i:j for i,j in zip(range(1,6),'abcde')} # i在rang(1,6)循环,j在‘abcde’循环,且同步循环 
h = {i:j.upper() for i,j in zip(range(1,6),'abcde')} #全部大写

'''
执行结果
d = {0: 1, 1: 2, 2: 3, 3: 4}
g = {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
h = {1: 'A', 2: 'B', 3: 'C', 4: 'D', 5: 'E'}
'''

二、字符串

str1 = 'hello, world!'
# 通过内置函数len计算字符串的长度
print(len(str1)) # 13
# 获得字符串首字母大写的拷贝
print(str1.capitalize()) # Hello, world!
# 获得字符串每个单词首字母大写的拷贝
print(str1.title()) # Hello, World!
# 获得字符串变大写后的拷贝
print(str1.upper()) # HELLO, WORLD!
# 从字符串中查找子串所在位置
print(str1.find('or')) # 8
print(str1.find('shit')) # -1
# 与find类似但找不到子串时会引发异常
# print(str1.index('or'))
# print(str1.index('shit'))

# 检查字符串是否以指定的字符串开头
print(str1.startswith('He')) # False
print(str1.startswith('hel')) # True
# 检查字符串是否以指定的字符串结尾
print(str1.endswith('!')) # True
# 将字符串以指定的宽度居中并在两侧填充指定的字符
print(str1.center(50, '*'))
# 将字符串以指定的宽度靠右放置左侧填充指定的字符
print(str1.rjust(50, ' '))
str2 = 'abc123456'
# 检查字符串是否由数字构成
print(str2.isdigit())  # False
# 检查字符串是否以字母构成
print(str2.isalpha())  # False
# 检查字符串是否以数字和字母构成
print(str2.isalnum())  # True

str3 = '  jackfrued@126.com '
print(str3)
# 获得字符串修剪左右两侧空格之后的拷贝
print(str3.strip())

输出结果

13
Hello, world!
Hello, World!
HELLO, WORLD!
8
-1
False
True
True
******************hello, world!*******************
                                     hello, world!
False
False
True
  jackfrued@126.com 
jackfrued@126.com

三、列表

输入

list = ['Google', 'modelwhale', 1997, 2000]
 
print ("原始列表 : ", list)
del list[2]
print ("删除第三个元素 : ", list)

输出结果

原始列表 :  ['Google', 'modelwhale', 1997, 2000]
删除第三个元素 :  ['Google', 'modelwhale', 2000]

输入

list1=[1, 400, 3, 5, 7, 100, 200, 1000, 2000]
# 先通过成员运算判断元素是否在列表中,如果存在就删除该元素
if 3 in list1:
	list1.remove(3)
if 1234 in list1:
    list1.remove(1234)
print(list1) # [1, 400, 5, 7, 100, 200, 1000, 2000]

# 从指定的位置删除元素
list1.pop(0)
list1.pop(len(list1) - 1)
print(list1) # [400, 5, 7, 100, 200, 1000]

# 清空列表元素
list1.clear()
print(list1) # []

输出

[1, 400, 5, 7, 100, 200, 1000, 2000]
[400, 5, 7, 100, 200, 1000]
[]

四、字典

# 创建字典的字面量语法
scores = {'骆昊': 95, '白元芳': 78, '狄仁杰': 82}
print(scores)
# 创建字典的构造器语法
items1 = dict(one=1, two=2, three=3, four=4)
# 通过zip函数将两个序列压成字典
items2 = dict(zip(['a', 'b', 'c'], '123'))
# 创建字典的推导式语法
items3 = {num: num ** 2 for num in range(1, 10)}
print(items1, items2, items3)
# 通过键可以获取字典中对应的值
print(scores['骆昊'])
print(scores['狄仁杰'])
# 对字典中所有键值对进行遍历
for key in scores:
    print(f'{key}: {scores[key]}')
# 更新字典中的元素
scores['白元芳'] = 65
scores['诸葛王朗'] = 71
scores.update(冷面=67, 方启鹤=85)
print(scores)
if '武则天' in scores:
    print(scores['武则天'])
print(scores.get('武则天'))
# get方法也是通过键获取对应的值但是可以设置默认值
print(scores.get('武则天', 60))
# 删除字典中的元素
print(scores.popitem())
print(scores.popitem())
print(scores.pop('骆昊', 100))
# 清空字典
scores.clear()
print(scores)

输出


{'骆昊': 95, '白元芳': 78, '狄仁杰': 82}
{'one': 1, 'two': 2, 'three': 3, 'four': 4} {'a': '1', 'b': '2', 'c': '3'} {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
95
82
骆昊: 95
白元芳: 78
狄仁杰: 82
{'骆昊': 95, '白元芳': 65, '狄仁杰': 82, '诸葛王朗': 71, '冷面': 67, '方启鹤': 85}
None
60
('方启鹤', 85)
('冷面', 67)
95
{}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值