基本数据类型
1.字符串
特性
- 不可变性
- 任何操作都不会对源字符串有任何影响
- 例name=aleX name.upper() print(name) #结果aleX
- 无法取消特殊字符的含义
- 强制取消,在字符串前面加r
- 例
name=r’l hf’
索引和切片
索引:起始下标是0(从左到右), (-1)从右到左
切片: s[起始位置: 结束位置: 步长]
特点:顾头不顾尾
常用方法
-
1. upper() 转换成大写 2. strip() 去掉空格 :只管左右两边的,中间的不管 例:print(s7.strip("abc"))也可以指定去掉的元素,即括号内加要去掉的内容 3. replace() 替换 例:replace('sb', 'alex', 2) 2是代表替换几个,不写默认一个 4. split() 切割 split("sb") 切割完形成列表,刀在两端时,会形成空字符串 5. format() 格式化输出 例 s= “我叫{0},我今年{1}岁了“。format{“刘能”,“23”} s12 = "我叫{name}, 今年年{age}岁了了, 我喜欢{singer}".format(name="周杰伦", singer="周润 发", age=28) # 指定关键字 print(s12) 6. startswith() 判断是否以xxx开头 7. find() 查找. 找不到返回-1 find(”a”,8,20) 在切片8-20中找a的位置 8. len() 内置函数. 直接使用. 不用点操作 求字符串的长度 9. count() 计算xx在字符串中出现的次数
-
capitalize() 首字母大写
casefold() 把字符串全变小写
+ 迭代
+ ```python
for 变量 in 可迭代对象:
循环体
else:
```
### 2.列表
#### 定义
+ []内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素
+ 创建形式
+ `l1 = [1, 2, '太白']`
+ `l1 = list(iterable) # 可迭代对象`
+ `l1 = [i for i in range(1,5)]列表推导式`
#### 增
```python
.append() :在最后添加
.insert(1,“东西”):将东西插入到1的位置
.extend([]) :迭代添加 ,在最后添加
lt = [22,33,44,55,66]
lt.insert(2,'文字')
print(lt) #[22, 33, '文字', 44, 55, 66]
lt = [22,33,44,55,66]
lt.extend([1,2,3])
print(lt)#[22, 33, 44, 55, 66, 1, 2, 3]
删
remove() ()中的内容为要删除的东西,不存在的话会报错
pop() ()中的数字为指定位置删除,返回被删除的数据
del lst[ : ] #切片删除,顾头不顾尾
clear() 列表清空
实例:
lt = [22,'44','张三','李胜']
lt.remove('44')
print(lt)#[22, '张三', '李胜']
lt = [22,'44','张三','李胜']
lt.pop(2)
print(lt)[22, '44', '李胜']
lt = [22,'44','张三','李胜']
del lt[1:2] #切片删除,顾头不顾尾
print(lt)#[22, '张三', '李胜']
改
# 按照索引改值
l = ['太白', 'alex', 'WuSir', '女神']
l[0] = '男神'
print(l) # ['男神', 'alex', 'WuSir', '女神']
# 按照切片改值(迭代着增加)
l = ['太白', 'alex', 'WuSir', '女神']
l[1:3] = 'abcdefg'
print(l) # ['太白', 'a', 'b', 'c', 'd', 'e', 'f', 'g', '女神']
# 按照切片(步长)改值(必须一一对应)
l = ['太白', 'alex', 'WuSir', '女神']
l[::2] = '对应'
print(l) # ['对', 'alex', '应', '女神']
查
- 切片查
- 循环查
for el in lst
常用方法
-
count(数)(某个元素在列表中出现的次数)。
1 a = ["q","w","q","r","t","y"] 2 print(a.count("q"))#2
-
index(从列表中找出某个值第一个匹配项的索引位置)
a = ["q","w","r","t","y"] print(a.index("r")) #2
-
sort (在原位置对列表进行排序)默认升序
sort(reverse = Ture)
表示降序
-
reverse (将列表中的元素反向存放)
1 a = [2,1,3,4,5]
2 a.sort()# 他没有返回值,所以只能打印a
3 print(a)
4 a.reverse()#他也没有返回值,所以只能打印a
5 print(a)
-
列表之间的相加和相乘
l1 = [1, 2, 3] l2 = [4, 5, 6] # print(l1+l2) # [1, 2, 3, 4, 5, 6] print(l1*3) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
小练习
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
请将字符串s = "qwert"的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
s = "qwert"
li[4:]=s
print(li) #['alex', 'WuSir', 'ritian', 'barry', 'q', 'w', 'e', 'r', 't']
针对列表names=[‘金角大王’, ‘黑姑娘’, ‘rain’, ‘eva’, ‘狗蛋’, ‘银角大王’, ‘eva’,’鸡头’]进入以下操作
通过names.index()的方法返回第2个eva的索引值
names.index('eva',4,-1) 第二个eva的索引值
优缺点
- 可以储存大量数据,量大查询速度会慢
- 只能顺序储存,关联性差
3.元组
特性
-
不可变性
- 元组本身不可变性,但其中其它元素可变
(99, 88, 77, ['Alex', 'Jack'], 33)
- 这个
['Alex', 'Jack']
列表中的元素可以改变- 不变的是这个元素特有的性质( 列表)
创建
ages = (11, 22, 33, 44, 55)
#或
ages = tuple((11, 22, 33, 44, 55))
常用操作
-
索引
-
切片
-
循环
for el in tuple
-
长度
len()
-
包含
alex in names
结果True或Flase -
index和count方法
-
tu = ('太白', '太白', 'WuSir', '吴超') print(tu.count('太白')) # 2 tu = ('太白', [1, 2, 3, ], 'WuSir', '女神') print(tu.index('太白')) # 0
-
4.字典
基本状况
-
查询速度快,不受dict的大小影响
-
消耗内存大
-
key 是唯一的,是不可变(可哈希)的数据类型,有
int、str、bool、tuple
创建操作
>>>person = {"name": "alex", 'age': 20}
#或
>>>person = dict(name='seven', age=20)
#或
>>>person = dict({"name": "egon", 'age': 20})
#或
>>> {}.fromkeys([1,2,3,4,5,6,7,8],100)
{1: 100, 2: 100, 3: 100, 4: 100, 5: 100, 6: 100, 7: 100, 8: 100}
增
dic['weight'] = 75 # 没有weight这个键,就增加键值对。有就改
dic.setdefault('name',54) #没有就添加,有就键不变
删
# pop 通过key删除字典的键值对,有返回值,可设置返回值。
dic = {'name': '太白', 'age': 18}
ret = dic.pop('name')
print(ret,dic) # 太白 {'age': 18}
dic = {'name': '太白', 'age': 18}
ret = dic.pop('n','alex') #设置返回值。
print(ret,dic) #alex {'name': '太白', 'age': 18}
popitem() #删除最后一个,有返回值
dic = {'name': '太白', 'age': 18,'num':666}
ret = dic.popitem()
print(ret,dic) # ('num', 666) {'name': '太白', 'age': 18}
clear #清空字典
del dic #删除整个字典
del #通过键删除键值对
del names["oldboy"] # 删除指定key,同pop方法
改
dic['key'] = 'new_value',如果key在字典中存在,'new_value'将会替代原来的value值;
dic.update(dic2) 将字典dic2的键值对添加到字典dic中
查
dic['key'] #返回字典中key对应的值,若key不存在字典中,则报错;
dic.get(key, default = None)#返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None)
'key' in dic #若存在则返回True,没有则返回False
dic.keys() 返回一个包含字典所有KEY的列表;
dic.values() 返回一个包含字典所有value的列表;
dic.items() 返回一个包含所有(键,值)元组的列表;
循环
1、for k in dic.keys()
2、for k,v in dic.items()
3、for k in dic # 推荐用这种,效率速度最快
info = {
"name":"小猿圈",
"mission": "帮一千万极客高效学编程",
"website": "http://apeland.com"
}
for k in info:
print(k,info[k])
输出
name 小猿圈
mission 帮一千万极客高效学编程
website http://apeland.co
赋值(拆包)
a,b = 1,2
print(a,b) #1 2
a,b = ('你好','世界') # 这个用专业名词就叫做元组的拆包
print(a,b)#你好 世界
a,b = ['你好','大飞哥']
print(a,b)#你好 大飞哥
a,b = {'汪峰':'北京北京','王菲':'天后'}
print(a,b)#汪峰 王菲
for k,v in dic.items():
print('这是键',k)
print('这是值',v)
5.set集合
特性
- 无序
- 不重复
- 元素是可哈希(不可变)类型
作用
- 去重
- 关系测试
增
.add()
.update()
set1 = {'alex','wusir','barry'}
set1.update('ABC')
print(set1)#{'B', 'A', 'barry', 'C', 'wusir', 'alex'}
删
.remove() 删除一个元素
.pop() 随机删除一个元素
.clear() 清空集合
del set1 删除集合
集合之间的其它操作
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
交集&
并集|
差集- #(set1 - set2) # {1, 2, 3}
反交集^
6.枚举
enumerate:枚举
- 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。
li = ['alex','银角','女神','egon','太白']
for i in enumerate(li):
print(i)
for index,name in enumerate(li,1):
print(index,name)
for index, name in enumerate(li, 100): # 起始位置默认是0,可更改
print(index, name)
(0, 'alex')
(1, '银角')
(2, '女神')
(3, 'egon')
(4, '太白')
1 alex
2 银角
3 女神
4 egon
5 太白
100 alex
101 银角
102 女神
103 egon
104 太白