日期:2021.01.25
1. 数据类型
-
字符串(不可变序列)
表示形式
print('abc')
print("abc")
print('''abc''')
输出都是:abc
str.lower() | 变小写 |
str.upper() | 变大写 |
str.split(sep) | 使用sep将字符串分割,默认sep为空格 |
str.replace(old, new) | 将str中的old替换为new |
str.format() | 向str中填充内容 |
各个函数输出实例:
Input: words = 'Py thon'
words.lower()------>Output: 'py thon'
Input: words.upper()------>Output: 'PY THON'
Input: words ------>Output: 'Py thon'
Input: words.split(' ')--->Output: ['Py','thon']
Input: words.replace('Py thon','programe')-->Output: 'programe'
特别的,format()函数,自动化填充
-
列表List(可变序列)
定义: 一种有序的集合,内部可以由任何数据类型组成
names =['David', 'Mary', 'Henry', 'Swift', 'Lenard']
ages = [25,23,23,21, 26]
hobbies = [ ['Baskatball', 'Pingpang', 'Hiking'],
[ 'Reading', 'Movies'],
[ 'Diving', 'Hiking'],
[ 'Football', 'Music'],
['Stay at Home'] ]
print(type (names))
print(type(ages))
print(type(hobbies))
print (names)
print(ages)
print(hobbies )
<class 'list'>
<class 'list'>
<class 'list'>
[ David', 'Mary', 'Henry', 'Swift', ' Lenard' ]
[25,23, 23, 21,26]
[[' Basketball', 'Pingpang', 'Hiking'], [' Reading','Movies'], ['Diving', 'Hiking'], ['Football', 'Music'], ['Stay at Home']]
拼接:
a1 = [ 'Michael', ' Bob']
a2 = ['David', 'Lee']
print(a1 + a2)
print(a2 + a1)
[ 'Michael' , 'Bob' , 'David' , 'Lee']
['David' , 'Lee' , 'Michael' , 'Bob']
拆包:
等号两边长度相同
name, age = ['David', 25]
print(name)
print(age)
David
25
切片——和split函数一致
Input: print(names[2]) #正索引
print(names[-3]) #倒索引
Henry
Henry
print (names[0:3])
print (names[-5:-2])
[ 'David' , 'Mary' , 'Henry']
[ 'David' , 'Mary' , 'Henry']
list.append(a) | 向list中添加元素a | 在尾部添加元素 |
list.extend(lst) | 向list中添加列表Ist | 在尾部添加列表 |
list.count(a) | 统计list中元素a的个数 |
-
元组tuple(不可变序列)
形似列表,有:
- 元组拼接
- 切片
- 拆包
形式:
t = ('python','hello','world')
for item in t: #遍历元组
print(item)
['python' , 'hello' , 'world']
-
集合
- 元素不重复
- 集合元素没有顺序,没有索引
- 集合不能切片
集合的创建:
names2 = [ 'David', 'Mary', 'David', 'Swift', 'David']
print(set(names2)) #set()是集合函数
{'Swift' , 'Mary' , 'David'}
集合的添加 setdata.add(ele) 向setdata中加入ele.(在头部添加)
-
字典
- 形似hashMap,索引---->数据(key---->value)
- 字典可以嵌套字典
- 字典可以存储列表、字符串、数字等等
字典的创建:
infos = {'David' :{ 'age' :25,
'gender' :'Male',
'hobbies':['Basketball', 'Pingpang', 'Hiking'] },
'Mary' :{ 'age' :23,
'gender' : 'Female',
'hobbies': [' Reading', 'Movies']},
'Henry':{ 'age' :23,
'gender' : 'Male'
'hobbies': ['Diving', 'Hiking']}
}
print(infos)
dictdata.items() | 返回dictdata所有item(输出字典中的所有) |
dictdata.keys() | 返回dictdata的所有关键词 |
dictdata.values() | 返回dictdata的所有数据 |
dictdata.get(keystr) | 获取关键词keystr对应的数据 |
dictdata [keystr] | 获取关键词keystr对应的数据 |
将字典中转化为List索引某一项进行输出(切片)
list(字典.items())[0]
( 'David',
{'age': 25,
'gender': 'Male',
'hobbies': ['Basketball' , 'Pingpang' , 'Hiking'] } )
-
布尔值boolean
不多说,说特别的。
案例 | 结果 |
4 in [1,2,4] | True |
4 not in [1,2,4] | False |
3 in [1,2,4] | False |
3 not in [1,2,4] | True |
2. 逻辑语句
-
if语句
格式:
if 条件一:
执行语句一
elif 条件二:
执行语句二
elif 条件三:
执行语句三
else:
执行语句四
空字符串、空列表等各种空值等同于False;非空值等同于True.
-
for循环
格式:
for 元素 in 集合:
执行语句
实例一:累加
result = 0
for i in range(1,101): #range(1,101)表示生成1到100的序列
result = result + i
实例二:遍历列表
names = ['David','Henry','Mary']
for name in names:
print(name)
实例三:字符串
name = 'David'
for s in name:
print(s)
实例四:字典
输出字典元素
infos = { 'David' :{'age':25,
'gender': 'Male'},
'Mary' :{'age':23,
'gender': ' Female'},
'Henry' :{'age' :23,
'gender': 'Male'}
}
for item in infos.items():
print(item)
#输出的是元组
( 'David' , { 'age' : 25, 'gender' : 'Male'} )
( 'Mary' , { 'age' : 23, 'gender' : 'Female'} )
( 'Henry', { 'age' : 23, 'gender' : 'Male'} )
拆包输出字典
for name, info in infos.items( ):
print(name, info)
( 'David' , { 'age' : 25, 'gender' : 'Male'} )
( 'Mary' , { 'age' : 23, 'gender' : 'Female'} )
( 'Henry', { 'age' : 23, 'gender' : 'Male'} )
可以看出info 指代 name后的数据{ 'age' : 23, 'gender' : 'Male'}
for name, info in infos.items( ):
print(name)
David
Mary
Henry
实例五:打印乘法口诀表
for row in range(1, 10):
for col in range(1, row+1):
formula = '{co1}*{row}={res}' .format(col=col, row=row, res=col*row)
print(formula, end='\t')
print()
- 循环嵌套
- print函数结束默认添加换行(print的end参数 = ' \n ')
- 构造一个字符串模板 = '{co1}*{row}={res}' ,接收关键词
- 用format()函数添加字符串
-
列表推导式
实例一:表示
[x*x for x in n] #集合n = range(1,10)
[x for x in n] 表示一个列表,元素提取于集合n中的各个元素x
而[x*x for x in n] 表示是一个提取的元素x自乘的列表
实例二:带条件的列表推导式
#[x*x for x in n if x>5] 等价于
[x*x
for x in n
if x>5 ]
实例三:对一个字符串列表进行大小写操作
words = ['Life','Is','Short']
result = [w.lower() for w in words]
print(result)
['life',
'is',
'short']
实例四:统计单词词频
lower_words = ['life', 'is', 'short','is',
'so', 'We', 'use', 'python',
'python','is', 'easy', 'to','learn',
'and', 'easy','to', 'use']
wordset = set(lower_words)
#3.对wordset 中每个词语w进行-一些操作
[lower_words.count(w) for w in wordset]
[1,1,1,2,2,1,2,2,2,1,1]
#构造成元组,让单词与词频一起显示
[ (w, lower_words.count(w)) for w in wordset ]
[ ('so', 1),
('and', 1),
('learn', 1),
('use', 2),
('to', 2),
('we', 1),
('easy', 2),
('python', 2),
('is', 2),
('short', 1),
('life', 1) ]
-
try-except
except代表在出错的地方执行某个语句
for x in [1,2,0,2,1]:
try:
print(10/x)
except:
print('0除错误')
#pass
10.0
5.0
0除错误
5.0
10.0
用pass跳过出错的地方
for x in [1,2,0,2,1]:
try:
print(10/x)
except:
#print('0除错误')
pass
10.0
5.0
5.0
10.0
-
可视化图表
在数据的输出结果中以图表的形式表现出来。需要导包 import matplotlib.pyplot as plt
3.函数
模板
- 内置函数:
abs(num) | 取num的绝对值 |
min(list) | 取列表的最小值 |
max(list) | 取列表的最大值 |
sum(list) | 求列表的和 |
sorted(list,reverse = True) | 排序,reverse = True或false 调整排序方向 |
range(start,end,step) | 生成以步长为step(默认为1)、 start到end-1的序列 |
count(list,value) | 返回list中某个value出现的次数 |
reverse(list) | 反转列表 |
remove(list,value) | 移除列表中某个value,返回修改后列表 |
- map(func, list)映射运算
将func运算映射到list的每一个元素
实例一:对列表中的列表元素进行求和
lst = [[1,1], [1,2], [1,2], [1,2], [1,2], [1,2], [1,2]]
res = map(sum, lst)
list(res)
[2,3,3,3,3,3,3]
4.文件操作函数
open(file, mode='r', encoding=None)
- file 文件路径.
- mode操作方式们,最常用的是r和a+。r读取,a+是追加写入 .
- encoding编码方式,常见的文件编码方式主要是utf-8和gbk
读取返回io对象
io对象有read()方法
重点函数:
5.内置库 - 文件路径pathlib库
相对路径:与此时的代码包同在一个文件夹下 ’ img‘
绝对路径:'C:/Users/thunderhit/Desktop/Python数据分析入门/02-Python语法入门/img'