python入门2
python入门2
列表、字典、元组、集合
列表
1 | # 列表 |
运行结果:
[‘s’, ‘h’, ‘y’, ‘ee’, 123] [‘s’, ‘h’, ‘y’, ‘ee’, 123]
1 | print(list1[0],list1[-2]) |
运行结果:
s ee
获取索引
1 | # 获取索引 |
报错:
ValueError: ‘ss’ is not in list
1 | list3=['s','ss',123,4,123,'ss','4'] |
运行结果:
2
规定查找区间
1 | #规定查找区间 |
运行结果:4
查找索引区间超过列表长度
1 | #查找索引区间超过列表长度 |
报错:IndexError: list index out of range
设置步长
1 | #设置步长 |
运行结果:
[30, 50]
[30, 40, 50, 60]
[30, 40, 50, 60]
[10, 20, 30, 40, 50, 60]
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
添加新的元素
append
1 | # 添加新的元素 |
运行结果:
添加新元素前 [1, 2, 3, 4] 2862260696008
添加新元素之后 [1, 2, 3, 4, 6] 2862260696008
extend
1 | list5=[1,2,3,4] |
运行结果:
添加新元素前 [1, 2, 3, 4] 2213139002312
append添加新元素之后 [1, 2, 3, 4, [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]] 2213139002312
extend添加新元素之后 [1, 2, 3, 4, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
insert
1 | list5=[1,2,3,4] |
运行结果:insert添加新元素之后 [1, 2, 10, 3, 4]
在某位置添加很多元素
1 | list5=[1,2,3,4] |
运行结果:
list添加新元素之后 [1, ‘s’, ‘h’, ‘y’, ‘ee’, 123]
list添加新元素之后 [1, ‘s’, ‘h’, ‘y’, ‘ee’, 123, 3, 4]
移除元素
remove
1 | print('list添加新元素之后',list5) |
运行结果:[1, 2, 3, 4, 4, 5, 6, 1]
运行报错:ValueError: list.remove(x): x not in list
pop
1 | # 移除索引为n的元素 |
运行结果:[1, 2, 3, 4, 5, 6, 1]
1 | # 如果不知名参数,pop将删除列表中最后一个元素 |
运行结果:1
切片
1 | # 用切片删除多个元素 |
运行结果:
[1, 2, 3, 4, 5, 6]
[1, 4, 5, 6]
del&clear
1 | # clear:清空列表 |
运行结果:
[]
NameError: name ‘list6’ is not defined
修改
1 | # 修改 |
运行结果:
[1, 1, 4, 3, 2]
[1, 11, 2, 3, 3, 2]
排序
1 | # sort默认升序 |
运行结果:
[1, 2, 2, 3, 3, 11]
[11, 3, 3, 2, 2, 1]
list7: [11, 3, 3, 2, 2, 1] list8: [1, 2, 2, 3, 3, 11] list9: [11, 3, 3, 2, 2, 1]
生成
1 | # 列表生成 |
运行结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
[2, 4, 6, 8, 10]
字典
创建字典
使用{}创建
1 | # 字典的创建方式 |
运行结果:
{‘张三’: 13, ‘李四’: 15, ‘王五’: 20, ‘赵六’: ‘’} <class ‘dict’>
使用内置函数
1 | # 使用内置函数dict |
运行结果:
{‘name’: ‘Shyee’, ‘age’: 22}
创建空字典
1 | d={} |
获取字典中的元素
1 | # 获取字典元素 |
运行结果:
13KeyError: 'jojo'
15 None
30
判断在不在字典里
1 | # 判断在不在字典里 |
运行结果:
True
False
删除字典中的元素
1 | # 删除字典中的元素 |
运行结果:
{‘张三’: 13, ‘李四’: 15, ‘赵六’: ‘’}
1 | #清空字典 |
运行结果:
{}
新增
1 | # 新增 |
运行结果:
{‘jojo’: 20}
修改
1 | # 修改 |
运行结果:
{‘jojo’: 1}
获取所有的key
1 | dict1={"张三":13,"李四":15,"王五":20,"赵六":""} |
运行结果:
dict_keys([‘张三’, ‘李四’, ‘王五’, ‘赵六’])
[‘张三’, ‘李四’, ‘王五’, ‘赵六’]
获取所有的值
1 | # 获取所有的值 |
运行结果:
dict_values([13, 15, 20, ‘’])
[13, 15, 20, ‘’]
获取所有的键值对
1 | # 获取所有的键值对 |
dict_items([(‘张三’, 13), (‘李四’, 15), (‘王五’, 20), (‘赵六’, ‘’)])
张三
字典的遍历
1 | # 字典的遍历 |
运行结果:
张三 13 13
李四 15 15
王五 20 20
赵六
字典的特点
· 字典中的所有元素都是一个key-value对, key不允许重复, value可以重复
· 字典中的元素是无序的
· 字典中的key必须是不可变对象
· 字典也可以根据需要动态地伸缩
· 字典会浪费较大的内存,是一种使用空间换时间的数据结构
内置函数zip()
1 | # 内置函数zip() |
运行结果:
{‘A’: 27, ‘B’: 28, ‘C’: 29, ‘D’: 30}
元组
不可变序列与可变序列
不变可变序:字符串、元组
不变可变序列:没有增、删,改的操作
可变序列:列表、字典
可变序列:可以对序列执行增、删、改操作,对象地址不发生更改
元组的创建
1 | # 元组的创建 |
元组的修改
1 | # 如果对元组中的值进行修改 |
报错:TypeError: 'tuple' object does not support item assignment
1 | # 向t[4]添加元素 |
运行结果:
[‘l’] 2052995427208
[‘l’, 3] 2052995427208
元组的遍历
1 | # 元组的遍历 |
a
1
1
(‘a’, 1, ‘1’)
[‘l’, 3]
{‘a’}
集合
集合的创建
1 | s={1,1,2,2,3,3,"a","a",'a',{'s'},{'s'}} |
报错:TypeError: unhashable type: 'set'
1 | s={1,1,2,2,3,3,"a","a",'a'} |
运行结果:{1, 2, 3, ‘a’}
不能重复
内置函数set
1 | # 内置函数set |
运行结果:
{0, 1, 2, 3, 4, 5}
{‘’, 3, 4, 5}
{‘’, 3, 4, 5}
{‘n’, ‘y’, ‘t’, ‘h’, ‘P’, ‘o’}
set()
集合的操作
1 | # 判断 |
运行结果:
False
{0, 1, 2, 3, 4, 5, ‘s’}
{0, 1, 2, 3, 4, 5, ‘o’, ‘s’}
{‘a’, 1, 2, 3}
{1, 2, 3}
set()
字符串
字符串的驻留机制
1 | a='Python' |
运行结果:
Python 2116166832240 Python 2116166832240 Python 2116166832240
有驻留的情况:
字符串的长度为0或1时·符合标识符的字符串
字符串只在编译时进行驻留,而非运行时
[-5,256]之间的整数数字
1 | '' s1= |
sys中的intern方法强制驻留
1 | import sys |
然而pycharm对字符串进行了优化处理(会驻留)
注:在需要进行字符串拼接时建议使用str类型的join方法,而非+,因为join()方法是先计算出所有字符中的长度,然后再拷贝,只new一次对象,效率要比”+”效率高
字符串的查询
1 | s='hello,hello' |
运行结果:
3
3
9
9
大小写转换
1 | s='Hello this is Shyee' |
运行结果:
s:Hello this is Shyee 1336088248112
upper: HELLO THIS IS SHYEE 1336088256560
lower: hello this is shyee 1336088256720
swapcase: hELLO THIS IS sHYEE 1336088256800
capitalize: Hello this is shyee 1336088258240
title: Hello This Is Shyee 1336088258320
对齐操作
1 | s='Hello this is Shyee' |
运行结果:
Hello this is Shyee*
Hello this is Shyee
Hello this is Shyee—
###Hello this is Shyee
000Hello this is Shyee
-000000123
拆分
1 | s='Hello this is Shyee' |
运行结果:
[‘Hello’, ‘this’, ‘is’, ‘Shyee’]
[‘Hello thi’, ‘ i’, ‘ Shyee’]
[‘Hello’, ‘this’, ‘is Shyee’]
[‘Hello’, ‘this’, ‘is’, ‘Shyee’]
[‘Hello thi’, ‘ i’, ‘ Shyee’]
[‘Hello this’, ‘is’, ‘Shyee’]
字符串的判断
1 | #判断是否是合法的标识符 |
运行结果:
hello,Shyee False
hello True
中文_ True
中文_123 True
hello Shyee False
True True
hello Shyee False
helloShyee True
中文 True
123 True
123fh False
123 True
四 True
ⅤⅢⅣ True
123中文 True
ⅤⅢⅣasd True