本篇文章讲解了python编程的基础部分内容,主要从最基本的函数、文件操作、面向对象与模块几个方面进行讲解
python标准数据类型分为Number(数字)、String(字符串)、List(列表)、Dictionary(字典)、Sets(集合)、Tuple(元组)
2、python基础知识
2.1列表
- 列表中每个元素都是可变的
- 列表中的元素是有序的,每个元素对应一个位置
- 列表可以容纳python中的任何对象
2.1.1列表的索引及切片
- 列表的索引从左至右为0,1,2,3;从右至左为-1,-2,-3,-4
- 列表的切片是左闭右开区间
代码如下:
all_in_list = [0.3, 'hello', True]
print(all_in_list)
res = all_in_list[0] # 列表的索引
print(res)
res = all_in_list[-2]
print(res)
res = all_in_list[0:2] # 列表的切片,左闭右开
print(res)
结果如下:
2.1.2列表的增删改查操作
名称 | 函数说明 |
list.append(obj) | 在列表末尾添加新的对象 |
list.insert(index, obj) | 将对象插入列表 |
list.remove(obj) | 移除列表中某个值的第一个匹配项 |
代码如下:
all_in_list = [0.3, 'hello', True]
all_in_list.append('hello world') # 新增元素
all_in_list.insert(0,'pre-hello')
print(all_in_list)
all_in_list.remove('hello world') # 删除元素
del all_in_list[:2]
print(all_in_list)
all_in_list[0] = 100 # 元素的修改
print(all_in_list)
结果如下:
2.2字符串
2.2.1字符串操作
代码如下:
string = 'My name'
res = string[0] # 字符串的索引
print(res)
res = string[:2] #左闭右开
print(res)
res = string*2 #打印两遍字符串
print(res)
res = string+' is xxx' #字符串后面加上is xxx
print(res)
res = string.split(sep=',') #字符串切片
print(1,string)
res = string.lower() #把字符串所有字母变成小写
# string[0] = 'Y' # 非法操作,字符串属于不可变的数据类型
print(res)
结果如下:
2.3字典
- 字典以键值对形式存在
- 用{ }进行构建字典,键来索引值
- 键不能重复,不能修改,值可修改
2.3.1字典的访问及增删改查
代码如下:
dic = {'h':'hello', 0.5:[0.3,0.2], 'w':'world', 'hh':0.5}
res = dic['h'] # 字典中的元素无先后顺序,通过键来访问值
print(res)
dic['h'] = 100 #替换键值对的值
dic['hw'] = 'hello world' # 新增键值对
print(dic)
dic.update({1:2,3:4}) # 新增键值对
print(dic)
del dic['h'] #删除键值对
print(dic)
结果如下:
3.文件操作
3.1文件访问方式
r | 以只读方式打开文件。文件的指针将会放在文件的开头 |
w | 文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
3.2文件操作方法
open(文件名,访问模式) | 打开文件 |
f.close() | 关闭文件,记住用open()打开文件后需得关闭它,否则会占用系统的可打开文件句柄数。 |
f.readline() | 读出一行信息。 |
f.readlines() | 读出所有行,也就是读出整个文件的信息。 |
f.write(string) | 把string字符串写入文件。 |
3.3练习:小说《Walden》单词词频统计,用Python统计小说Walden中各单词出现的频次,并按频次由高到低排序。
1.导入所需的re模块,以只读的方式打开文件,读入文本
import re
f = open('Walden.txt', 'r')
txt = f.read() # 读取进来的数据类型是字符串
f.close()
print(txt)
结果如下:
2.把文本全部变成小写,去除小说中的标点符号
(re.sub(替换的内容,替换成什么,对哪一个字符串进行操作))
txt = txt.lower() #把字母变成小写
txt = re.sub('[,.?:"\'!-]', '', txt) # 去除小说中的标点符号
print(txt)
结果如下:
3.把单词以空格的形式进行分割,建立字典
words = txt.split() # 单词分割
word_sq = {}
4.把字典中的键取出来依次进行遍历,如果不存在,值等于一,如果已经存在,值加一
for i in words:
if i not in word_sq.keys():
word_sq[i] = 1
else:
word_sq[i] += 1
print(word_sq )
结果如下:
5.使用自定义函数降序排列
res = sorted(word_sq.items(), key=lambda x:x[1], reverse=True) # 排序
print(res)
结果如下:
4.函数
4.1内建函数:
print()、input()、int()等
4.2自定义函数:
方式1:def function(x,y): #定义def关键字,这种方式必须有返回值
return 'result’
方式2:y = lambda x:x+1 #返回x里面的第一个元素
4.3练习:自定义求序列偶数个数的函数
使用第一种定义方式,使用for循环遍历列表,初始化z为0,如果列表中的数能被2除尽,则是偶数,z加1
代码如下:
def su(x):
z = 0
for i in x:
if i%2==0:
z += 1
# print(z)
return z
res = su([1,2,3,4,5,6])
print(res)
5. 面向对象与模块
5.1类是对象的抽象,对象是类的实例
定义一个类的属性和方法:
class Human:
def __init__(self, ag=None, se=None):
self.age = ag # 属性
self.sex = se
def square(self, x): # 方法
return x**2
类的实例化,调用类的方法和属性:
zhangfei = Human(ag=23, se='男') # 类的实例化
res = zhangfei.square(10)
print(res)
res = zhangfei.age
print(res)
res = zhangfei.sex
print(res)
结果如下:
5.2导入模块和调用函数的三种方式
#导入模块的三种方式
import packagename
import packagename as new_name
from packagename import function_name
#调用函数的三种方式
packagename.function_name
new_name. function_name
function_name