Python 学习记录

注释
在python中,用 # 作单行注释
用三引号作多行注释(三个单引号或者三个双引号)

#单行注释
#单行注释

'''
多行注释
多行注释
多行注释
'''


print 输出
print输出是默认换行的

x=1
y=2
#换行输出
print(x)
print(y)

#不换行输出
print(x,y)

字符串

s="abcdefg"
print(s)

如果想获取字符串中的某一段子串,用 [头下标:尾下标] 来截取相应字符

s="abcdefg"
print(s[2:5])	#输出第三到六个字符,即 cdef
print(s[2:])	#从第三个字符还是输出
print (s*2)	 	#连续输出字符串两次
print (s+"123")	#输出 abcdefg123

列表
列表用 [ ]

列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾

a=[1,2,3,4,5]
s=['a','b','c','d']
print(a[:])
print(s[:])
print(a[-1])
print(a+s)

使用append()添加元素

list1=[]		#空列表
list1.append('a')
list1.append('b')
print(list)

'''
输出
['a','b']
'''

使用del删除列表中的元素

list=['a','b','c']
del list[1]
print(list)

'''
输出
['a','c']
'''

元组
元组类似于列表
元组用 ()标识
元组不能二次赋值,相当于只读列表

a=(1,2,3,4,5)
s=('a','b','c','d')
print(a)
print(s)
print(a+s)

元组只包含一个元素时,需要在元素后面加逗号

tup1 = ()
tup = (1,)

元组的元素值是不允许删除的,但是可以用del 删除整个元组

无关闭分隔符
任意无符号的对象,以逗号隔开,默认为元组

print('abc',123,'def')

字典
列表是有序对象的集合,字典是无序对象的集合
字典当中的元素是通过键值来存取的,而不是通过偏移
字典用 { } 标识
创建时,如果同一个键被赋值两次,将记住后一个的值

键必须不可变,所以可以用数字,字符串或元组充当,用列表就不行

zi = {'name':'Tom','age':'two','address':'home'}
zi['name'] = 'James'	#修改
zi['sex'] = 'man'	#添加

print(zi)	#输出完整字典

print(zi.key)	#输出全部的键

print(zi.value)	#输出全部的值

del zi['sex']	#删除sex条目

zi.clear()		#清空所有条目

del zi		#删除整个字典

数据转换
只需要将数据类型作为函数名即可

int(x)
long(x)
float(x)
str(x)	#转成字符串
ord(x)	#将一个字符转成整数
hex(x)	#将一个整数转成十六进制的字符串
oct(x)	#将一个整数转成八进制的字符串

运算符
a**b :结果为a的b次幂
a//b :结果为a/b的商的整数部分

逻辑运算符
and 与
or 或
not 非

成员运算符
in :如果在序列中,找到指定值,则返回true,否则返回false
not in :如果在序列中,找不到指定值,则返回true,找到则返回false

list = [1,2,3,4,5]
a = 10
b = 20
if(a in list)
	print('a is in list')
else
	print('a is not in list')


if(b not in list)
	print('b is not in list')
else
	print('b is in list')

身份运算符
is :判断两个标识符是不是引用自同一对象
is not : 判断两个标识符是不是引用自不同对象
如果两个标识符的类型相同,且值相等,则为引用自同一对象

a = 20
b = 20  #此时 id(a) == id(b)
if(a is b)	# 结果为 true
	print('true')

b = 30
if(a is b)	#结果为 false
	print('flase')

条件语句

if 判断条件1:
	执行语句1
elif 判断条件2:
	执行语句2
else:
	执行语句3

循环语句
python 提供 for 和 while 循环语句
没有do … while

while 判断条件:
	执行语句

while…else在循环条件为false时,执行else语句
( 执行一次else语句后,会退出循环,执行后面的语句,通过break语句中断,则不会执行else语句 )

while 判断条件1:
	执行语句1
else:
	执行语句2

for 循环
1.通过序列索引迭代

fruit = ['apple','banana','mango']
for a in fruit:
	print(a)


'''
输出:
apple
banana
mango
'''
fruit = ['apple','banana','mango']
for a in range ( len ( fruit ) ):
	print( fruit[a] )


'''
输出:
apple
banana
mango
'''

for…else语句
若不符合for循环的条件,则退出for循环,执行else语句
(若通过break语句中断循环,则不会执行else语句)

fruit = ['apple','banana','mango']
for a in range ( len ( fruit ) ):
	print( fruit[a] )
else:
	print('that is all')


'''
输出
apple 
banana
mango
that is all
''' 

pass语句

pass 是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句。

def sample(n_samples):
    pass

该处的 pass 便是占据一个位置,因为如果定义一个空函数程序会报错,当你没有想好函数的内容时,可以用 pass 填充,使程序可以正常运行。

del语句
del var
将某一变量删除

a = 10
print(a)
del a
print(a) 	#会报错

python 的 math、cmath模块
要使用模块,必须先引入

import math
import cmath

字符串格式化
基本用法是将一个值插入到有%s 或%d 的字符串中

print('my name is %s and my age is %d' % ('Tom',12))

'''
输出
my name is Tom and my age is 12
'''

三引号
使用三引号,允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符

a = ''' hello
world'''


'''
输出
hello
world
'''

日期和时间
time 和 calendar 模块可以格式化日期和时间

import time
ticks = time.time()	#获取时间戳
print(ticks)

获取当前时间

import time
ticks = time.time()
localtime = time.localtime(ticks)
print(localtime)

'''
输出
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=29, tm_hour=16, tm_min=42, tm_sec=19, tm_wday=2, tm_yday=120, tm_isdst=0)
'''

获取格式化时间

import time
ticks = time.time()
localtime = time.localtime(ticks)
asctime = time.asctime(localtime)

'''
输出
Wed Apr 29 16:44:41 2020
'''

格式化日期

import time
strftime = time.strftime('%Y-%m-%d  %H-%M-%s',time.localtime())
print(strftime)

'''
输出
2020-04-29 16-49-13
'''

获取某月日历

import calendar
cal = calendar.month(2020,4)
print(cal)

'''
输出
     April 2020
Mo Tu We Th Fr Sa Su
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
'''

函数
定义函数:
以关键字def开头,后接标识符名称和圆括号()

def function (parameter):
	执行语句
	return [expression]

不可更改对象: 字符串,整型,元组
(字符串类型和整型更改值的话,相当于删除原来的对象,然后重新生成一个对象)
可更改对象: 字典,列表

参数传递
参数如果是不可变类型,则相当于值传递,只是将值复制过去,对于对象本身没有影响
参数如果是可变类型,则相当于引用传递,对于对象本身会有影响


参数传递采用关键字传递
使用关键字传递,允许函数调用时,参数的顺序和声明不一致

def func(age,name):
	print('age: ',age)
	print('name: ',name)
	return 
func(name='tom',age=12)

'''
输出
age: 12
name: tom
'''

不定长传递
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数

def func(arg1,*arg):
	print(arg1)
	for a in arg:
		print(a)
	return 

func(1,2,3,4)

匿名函数
使用lambda创建匿名函数
lambda的主体是一个表达式

sum = lambda arg1,arg2 : arg1 + arg2
print(sum(10,20))

模块
模块是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

模块的引入

import module1

from…import语句
from…import语句能从模块中导入指定的部分

如导入math模块的sin函数:

from math import sin

将模块的全部内容导入

from module import *

在函数中使用全局变量

money = 2000
def func():
	money = money + 1
	return 

func()
print(money)

#输出 2001

dir函数
一个排好序的字符串列表,内容是一个模块里定义过的名字。

返回的列表容纳了在一个模块里定义的所有模块,变量和函数。

import math
print(dir(math))


'''
输出
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
'''

globals() 和 locals() 函数

如果在函数内部调用 locals(),返回的是所有能在该函数里访问的命名。

如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字。

两个函数的返回类型都是字典。所以名字们能用 keys() 函数摘取。

reload() 函数

当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。

因此,如果你想重新执行模块里顶层部分的代码,可以用 reload() 函数。该函数会重新导入之前导入过的模块。

Python中的包
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。

简单来说,包就是文件夹,但该文件夹下必须存在 _init_.py 文件, 该文件的内容可以为空。_init_.py 用于标识当前文件夹是一个包。

当首次调用包中的文件时,会首先调用_init_.py文件

Python 与 Excel 实战

import openpyxl, pprint

wb = openpyxl.load_workbook('check.xlsx')   # 打开excel文件
sheet = wb['Sheet1']  # 获取人口统计sheet工作表

countyData = {}     # 定义统计结果保存字典
print('reading...')

for row in range(2,sheet.max_row+1):    # 从文件第二行开始读取数据,直至最后一行
    state = sheet['B' + str(row)].value     # 读取数据
    county = sheet['C' + str(row)].value    # 读取数据
    pop = sheet['D' + str(row)].value       # 读取数据

    countyData.setdefault(state, {})
    countyData[state].setdefault(county,{'tracts':0,'pop':0})

    countyData[state][county]['tracts'] += 1    # 该县人口普查次数加一
    countyData[state][county]['pop'] += int(pop)    # 该县所有普查次区人口数量相加

print('writing results...')
resultFile = open('result.py','w')
resultFile.write(pprint.pformat(countyData)) # pprint生成一个字符串,打印已经格式化好的,有效的python代码

resultFile.close()
print('Done')

Python 自然语言处理

import jieba

f = open('')
txt = f.read()
words = jieba.lcut(txt)
counts = {}


for word in words:
    if(len(word) == 1) :
        continue
    elif word == '诸葛亮' or word == '孔明' :    # 排除人物重复的情况
        rword = '孔明'
    else :
        rword = word
        counts[word] = counts.get(word,0) + 1

personlist = ['孔明','曹操','刘备']   #列出人物表

items = list(counts.items())
items.sort(key = lambda item: items[1] , reserve = True)    # 按照降序排列
for i in range(20):
    word, count = items[i]
    if personlist.count(word) > 0 :
        print("{0:<10}{1:>5}".format(word,count))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值