一、常用数据结构和数值类型
数据结构类型 | 元素特点 | 表现形式 | 索引 |
---|---|---|---|
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
{}