九九乘法表
for i in range(1,10):
for j in range(1,i + 1):
print(str(j) + " * " + str(i) + " = " + str(i * j), end='\t')
print()
列表
#列表插入操作
lis = [12,32,232,123,1234,1234,12345,12346,4563734,23452345]
lis1 = lis[2:5:1]# 切片操作 start end 步长
list1.appand(100)#在列表末尾添加一个元素
list2 = [1234,12346,6456]
list1.extend(list2)#在列表末尾添加多个元素
list1.insert(1,90)#在列表任意位置添加元素
#列表元素的删除
lst = [123,5346,2345]
lst.remove(30)#从列表中移除30
lst.pop(1)#根据索引删除
lst[1:3] = [] #切片删除
lst.clear()
del lst
#列表排序
list = [123,345236,254576,3454,234,5,6]
list.sort(reverse = true)#降序,不产生新对象,在原列表上改变
new_list = sorted(list) #产生新列表
#列表生成式
lst = [i for i in range(1,10)]
#计算列表中某个元素的个数
lst.count(3)#查找3的个数
字典(键值对,无序序列)
#创建字典
scores = {'张三':100, '李四':200}
student = dict(name = 'jack', age = 20)
scores.get('张三',99)#更安全,找不到返回None,不会报错. 99是指找不到时默认的
del scores['张三'] #删除字典中指定键值对
#字典元素的遍历
for item in scorces:
print(item,scores[item])
#字典生成式
items = ['fruits','sss','qqq']
prices = [234,3456,45]
d = {item:price for item, price in zip(items, prices)}
元组(不可变序列)
#元组的创建
t = ('python', 'ss', 978)#可以省略小括号,只包含一个元素需要加上逗号
t2 = ('asdf',)
t1 = tuple(('python', 'ss', 978))
集合
#集合的生成
s = {2,3,45,5}#集合中元素不允许重复
s = set(range(6))
s = set([1,2,3,4])#利用set将列表、元组、字符串类型的数据转为集合
s = set()#定义空集合
#集合的新增操作
print(10 in s)#in not in
s.add(12)#向集合中新增一个元素
s.update({12,4,534,53})#一次至少更新一个元素,可以放列表和元组
#集合的删除操作
s.remove(12)#删除集合中的一个元素
s.discard(12)#集合中五无该元素时不会报错
s.pop()#无参
s.clear()
#集合间的关系
s1 == s2#判断两个集合是否相等
b.issubset(a)#b是否为a的子集
a.issuperset(b)#a是否为b的超集
a.isdisjoin(b)#两个集合是否有交集
#集合的数学操作
s1.intersection(s2)#返回交集 和&运算符一样
s1.union(s2)#并集操作 和|运算符一样
s1.difference(s2)#差集操作 和-运算符一样
s1.symetric_difference(s2)#对称差集,去除相同的元素
集合生成式
s = {i for i in range(6)}
字符串
驻留是指共用一个内存空间
pycharm进行了优化处理,字符串相同的就是同一对象
#字符串的查询操作
s = 'hello,hello'
s.index('lo')#3
s.find('lo')#3不会抛出异常
s.rfind('lo')#9最后一个出现位置
#大小写转化
upper() lower()
#对齐操作
s.center(20,'*')#居中对齐,填充*
s.ljust()#左对齐
#字符串的分割
s = s.split(sep = '|', maxsplit = 1)#默认分隔符为空格
rsplit()#从右边开始分割
#字符串的替换
s = 'hello python'
s.replace('python', 'java',4)#将python替换为java,最大替换次数为4
'*'.join('python')#返回p*y*t*h*o*n
t = ('hello', 'java', 'python')
''.join(t)#返回hellojavapython
#字符串的切片操作
s = s1[1:5:1] #从1开始截到4,步长为1
s = s1[::2]默认从0开始,步长为2
#格式化字符串
print('我是$s' % (name))
'我的名字叫{0}.今年{1}岁'.format(name,age)
print('%10d' % 99)#10代表宽度
#字符串的编码
byte = s.encode(encoding = 'GBK')#UTF-8编码
print(byte.decode(encoding = 'GBk'))#解码
类与对象
class Person(object):#Person 类,python支持多线程
def __init__(self,name):
self.name = name
class Student(Person):#Student 类 继承了Person类
home = '浙江' #直接写在类里的变量为类属性
def __init__(self,name,age):#构造函数
super().__init__(name)
self.age = age#实体属性
def eat(self):
print(self.name+'在吃饭')
@staticmethod
def method():
print('我使用了staticmethod修饰,所以我是静态方法')
@classmethod
def cm(cls):
print('我使用了classmethod进行修饰,所以我是类方法')
#创建Student类的对象
stu1 = Student('张三',10)
#调用的两种方式
stu1.eat()
Student.eat(stu1)#通过类名调用
深拷贝
#深拷贝
computer3 = copy.deepcopy(computer)
第三方模块的安装
map函数
map(h, a)
#相当于对a应用h函数,其中h不是变量而是函数h()
#如
squares = list(map(lambda x: x**2, range(10)))
文件操作
使用with语句会自动关闭
>>> with open('sample.txt') as fobj:
... for line in fobj:
... print(line, end = '')
...
I love Python
I love shiyanlou
读取文件+分析
#!/usr/bin/env python3
import os
import sys
def parse_file(path):
"""
分析给定文本文件,返回其空格、制表符、行的相关信息
:arg path: 要分析的文本文件的路径
:return: 包含空格数、制表符数、行数的元组
"""
fd = open(path)
i = 0
spaces = 0
tabs = 0
for i,line in enumerate(fd):
spaces += line.count(' ')
tabs += line.count('\t')
# 现在关闭打开的文件
fd.close()
# 以元组形式返回结果
return spaces, tabs, i + 1
def main(path):
"""
函数用于打印文件分析结果
:arg path: 要分析的文本文件的路径
:return: 若文件存在则为 True,否则 False
"""
if os.path.exists(path):
spaces, tabs, lines = parse_file(path)
print("Spaces {}. tabs {}. lines {}".format(spaces, tabs, lines))
return True
else:
return False
if __name__ == '__main__':
if len(sys.argv) > 1:
main(sys.argv[1])
else:
sys.exit(-1)
sys.exit(0)
pyplot
fig, axes = plt.subplots()
#fig 画板 axes画布,在画布上画
axes.set_xlabel('x label')
axes.set_ylabel('y label')
axes.set_title('title')
axes.grid(True)#网格线
axes.plot(x, x**2, color = 'r')#color设置颜色为红色
axes.plot(x, x**3, lw = 2, ls = '--', marker = '+')#lw线的粗度,ls线条格式,marker标记点
axes.legend(['y = x**2', 'y = x**3'], loc = 0)
pandas
构造二维表
df = pd.DataFrame([{'one': 1, 'two': 4},
{'one': 2, 'two': 5},
{'one': 3, 'two': 6}])
df
取出某一列
df['one']
对某一行某一个值进行修改
df['one'][1] = 1000
插入一个新行
df['tree'] = 1
选取某几行
s[['one', 'two']]