Python自学笔记——不定期更新中

Python 初学笔记

1. 基础知识

1.1 变量

1.1.1 变量名
  • 变量名只能包含字母、数字和下划线,不能用数字打头、不能包含空格(可以用下划线分隔单词)、不要用python关键字和函数名、尽量使用小写变量名、慎用小写字母l和大写字母O(容易误被当作1或0)
1.1.2 字符串
  • 字符串中可以储存字母
  • 可以用单引号也可以用双引号表示字符串变量:
"string"
'string'
t = "string"
print(type(t)) #结果:<class 'str'>

用加号 + 可以进行字符串的拼接:

a = "you"
b = 'nice'
c = a + ' are ' + b
print(c) #结果:you are nice
  • 添加空白(非打印字符,可以是空格、制表符和换行符):
"\tstring" #\t是制表符
'\nstring' #\n是换行符
  • 删除空白(Python认为字符有无空白是有很大区别的):使用lstrip()、rstrip()和strip()函数分别删除字符串开头、尾部和两端的空白
"\tstring" #\t是制表符
'\nstring' #\n是换行符

**注意:如果变量中有单引号,则必须用双引号表示字符串变量。

1.1.3 数字
  • 包括整数和浮点数,但浮点数包含的小数位数具有不确定性
    如输入:
0.2 + 0.1

则得到的输出为:0.30000000000000004

  • 注意:在Python 2中,整数除法的结果只包含整数部分,小数部分不是被四舍五入,而是被直接删除。

1.2 列表

  • python中用方括号[ ]来表示列表,逗号分隔不同元素。
names = ['qh','lkx','wwz',3,8.9]
print(names) 
#输出结果:['qh', 'lkx', 'wwz', 3, 8.9]
1.2.1 访问列表中的元素
  • 若要访问列表元素,可先指出列表的名称,并在方括号内指出元素的索引(注意元素索引从0开始而不是从1)。若索引为-1,则返回列表的最后一个元素。访问后元素或列表即可作为变量使用。
1.2.2 增、删、修改列表中的元素
  • 修改:访问、重定义即可
names = ['qh','lkx','wwz',3,8.9]
print(names) #输出结果:['qh', 'lkx', 'wwz', 3, 8.9]
names[0] = "lcy"
print(names) #输出结果:['lcy', 'lkx', 'wwz', 3, 8.9]
  • 增加:用append()函数可以在列表末尾添加元素;用insert()函数可以在列表任意位置添加新元素(要指定新元素的索引和值,第几个索引位置即出现添加的新元素)。
names.append(12.16)
print(names) #输出结果:['lcy', 'lkx', 'wwz', 3, 8.9, 12.16]
names.insert(2,'hd')
print(names) #输出结果:['lcy', 'lkx', 'hd', 'wwz', 3, 8.9, 12.16]
  • 删除:用del语句,选择列表中元素的位置索引来进行删除;用pop()函数,如果括号里有索引则删除该位置的元素同时获取它的值,没有则默认删除列表中最后一个元素;用remove()函数删除列表中第一个为某个值的元素。
del names[0]
print(names) #输出结果:['lkx', 'hd', 'wwz', 3, 8.9, 12.16]

names = ['qh','lkx','wwz',3,8.9]
names[0] = "lcy"
names.append(12.16)
print(names)
print(names.pop(2))
print(names.pop())
#输出结果:['lcy', 'lkx', 'wwz', 3, 8.9, 12.16]
          wwz
          12.16
          
names = ['qh','lkx','wwz',3,8.9,'qh']
print(names)
name1 = names[0]
names.remove(name1)
print(names)
#输出结果: ['qh', 'lkx', 'wwz', 3, 8.9, 'qh']
          ['lkx', 'wwz', 3, 8.9, 'qh']
1.2.3 列表的组织
  • 排序:永久性排序用sort()函数,此时原始列表被永久改变,可以用reverse = True进行反向排序;临时排序用sorted()函数。
age = [3,16,14,6,23]
age.sort()
print(age)
age = [3,16,14,6,23]
age.sort(reverse=True)
print(age)
#结果输出:[3, 6, 14, 16, 23]
          [23, 16, 14, 6, 3]

age = [3,16,14,6,23]
print(sorted(age))
print(age)
#结果输出:[3, 6, 14, 16, 23]
          [3, 16, 14, 6, 23]
  • 列表倒置:reserve()函数
age = ['qh','lkx','wwz']
age.reverse()
print(age)
#结果输出:['wwz', 'lkx', 'qh']
  • 确定列表长度:len()函数
age = ['qh','lkx','wwz']
len(age)
#结果输出:3

1.3 if 语句

1.3.1 条件测试
  • 逻辑语句
    相等运算符:==(区分大小写)
    不等运算符:!=
    其它数学比较:<、>、<=、>=
    逻辑语句:and(同时检查多个条件)、or
lkx = 22
sl = 23
yrx = 16
lkx < 18  #False
sl >= 20  #True
yrx<20 and lkx>20  #True
yrx<20 or lkx<20  #True
  • 特定值是否在列表的测验:用in或not in
names = ['qh','lkx','wwz',3,8.9]
3 in names     #True
if(2 not in names):
    print('xswl') #xswl
  • 布尔表达式:是条件测试的别名,其结果要么为True ,要么为False(通常用于记录条件)。
1.3.2 if 语句格式
  • python中if语句强制缩进,若条件通过则执行其后所有缩进的代码行,并且跳过余下所有的测试;
  • 在有否定条件执行时候用 if-else 语句;
  • 在多条件时候用 if-elif-else 语句;
  • Python并不要求if-elif 结构后面必须有else 代码块,有时else可以省略(如果知道最终要测试的条件,应考虑使用elif 来代替else 以确保满足相应的条件时代码才会执行)。
  • 注意:在运行for 循环前确定列表是否为空很重要
lkx = 22
sl = 23
yrx = 16
names = [lkx,sl,yrx]
--------------------------------
if(names[2] > 20):
   print('You are young')
else:
   print('Cool!')
--------------------------------
for i in names:
   if(i > 22):
       print('You are so cool')
   elif(i <= 22 and i > 18):
       print('You are nice')
   else:
       print('You are young')
#结果:You are nice
      You are so cool
      You are young
---------------------------------

1.4 Dictionary(字典)

1.4.1 基本用法
  • 在python中字典指的是一系列键-值对,放在花括号{}中表示,一个键与一个值对应相关,不同键-值对用逗号隔开。
lkx = {'identity':'student','age':22,3:'team'}
print(lkx)
#输出结果:{'identity': 'student', 'age': 22, 3: 'team'}
  • 引用键的时候用方括号[],直接指定 字典名[键]=值 即可添加键或修改键为新值,用del可以删除字典中的键-值对。
lkx = {'identity':'student','age':22,3:'team'}
lkx['position'] = 'IAP'
print(lkx)
#输出结果:{'identity': 'student', 'age': 22, 3: 'team', 'position': 'IAP'}
------------------------------------------------------------
lkx['position'] = 'CAU'
print(lkx)
#输出结果:{'identity': 'student', 'age': 22, 3: 'team', 'position': 'CAU'}
------------------------------------------------------------
del lkx['age']
print(lkx)
#输出结果:{'identity': 'student', 3: 'team', 'position': 'CAU'}
------------------------------------------------------------
  • 使用多行定义字典:巧妙利用花括号{}、缩进和逗号,方便阅读和增添信息
name_oc = {
   'p':'enso',
   'a':'amoc',
   's':'acc'
   }
1.4.2 遍历字典
  • 使用 .item() 返回字典中的所有键-值对, .keys() 则返回字典中所有的键, .values()返回字典中所有的值。
  • 通常使用for循环进行引用。
name_oc = {
   'p':'enso',
   'a':'amoc',
   's':'acc'
   }
for k, v in name_oc.items():
   print("\n" + k + ":")
   print("Value:" + v)
--------------------------------------
#输出结果:
p:
Value:enso

a:
Value:amoc

s:
Value:acc
---------------------------------------
for k in name_oc.keys():
   print(k)
#输出结果:
p
a
s
---------------------------------------
for v in name_oc.values():
   print(v)
#输出结果:
enso
amoc
acc
  • set()也可以用于提取字典中所有值,但返回没有重复项。
name_oc = {
   'p':'enso',
   'q':'acc',
   'a':'amoc',
   's':'acc'
   }
for tea in set(name_oc.values()):
   print(tea.title())
#结果输出:
Amoc
Acc
Enso

注意:由于遍历字典时键-值对的返回顺序可能与存储顺序不同,因此可以用sorted()进行排序后再输出。

1.4.3 嵌套字典与列表

2. 语法

  • python的语法和我之前用过的NCL、R语言等不太相同,有一个句点( . ) 的概念,需要把操作对象放在前面,即对句点前的某变量执行句点后的某方法所规定的操作,每个方法后的括号用于储存额外信息以帮助完成该操作。

3. 函数及其用途(目前先按照我学到的顺序记录一下)

title()     #以首字母大写的方式显示每个单词
upper()     #把字符串全部改为大写
upper()     #把字符串全部改为小写
rstrip()    #删除字符串尾部空白
str()       #将非字符串值表示为字符串
append()    #在列表末尾添加元素
pop()       #删除列表中某元素,同时获取它的值,默认为列尾。
remove()    #删除列表中第一个为某个值的元素
sort()      #永久性排序
sorted()    #临时性排序
len()       #确定列表长度
reserve()   #倒置列表
in          #检查特定值是否包含在列表中
not in      #检查特定值是否不包含在列表中
del         #删除某个值
items()     #返回字典中的所有键-值对
keys()      #返回字典中所有的键
values()    #返回字典中所有的值
range()     #返回一系列数字,告诉Python要重复这个循环多少次
callable()  #返回函数是否是可调用,True/False

4. 类和对象

定义类使用class 关键字实现(其后的冒号是必备的):

class 类名:#类名最好定义清楚,如使用代表该类功能的单词,多个单词连接也可以,首字母大写,如"TheSmartStudent"
    类属性 #包含在类中的变量
    类方法 #包含类中的函数

类属性和类方法不是必需的,且没有固定的先后顺序,但同属一个类的所有类属性和类方法,要保持统一的缩进格式。

4.1 手动添加构造方法(函数)

def __init__(self,...): #此方法的名字开头和结尾各有 2 个下划线,且中间不能有空格
    代码块

仅包含 self 参数的 init() 构造方法,又称为类的默认构造方法,会被python自动添加。
构建好之后则可以定投不缩进,直接调用前面创造的构造方法:

class TheSmartStudent:
	def __init__(self,content):
		print("你是最棒的")
Liu = TheSmartStudent()

输出结果为在这里插入图片描述

5. 自定义函数

使用def()关键字定义

def FunctionName(x,y):    #参数可以是1个也可以是多个,定义的时候是形式参数
	函数体
	return 			  	  #需要返回值就用return 
						  #到此为止只是声明了一个函数,它不能被执行,需要调用执行
FunctionName(3,7)		  #括号里在实际调用函数的时候改为实参
FunctionName(x=3,y=7)	  #按照参数定义顺序直接输入参数为位置传参
FunctionName(y=7,x=3)	  #使用形参名字,即关键字传参时不需按照顺序
						  #关键字传参不允许在位置传参之前

缺省值:在未传入足够的实参的时候,对没有给定的参数赋值:

def add(x=4, y=5,z=8):
    return x+y*z

可变参数:包括可变位置参数和可变关键字参数

#在形参前使用*表示该形参是可变位置参数
def sum(*param):
   result=0
   for x in param:
       result -= x
   return result
print(sum(1,2,3))
>>> -6
#在形参前使用 ** 表示该形参是可变关键字传参
def showconfig(**kwargs):
   print(type(kwargs))
   print(kwargs)
showconfig(a=1,x=8)
>>> <class 'dict'>
>>> {'a': 1, 'x': 8}
  • 注意:混合使用参数的时候位置很重要:普通参数>参数列表>可变参数,可变位置参数>可变关键字参数之前

感想

  • 要永久改变某变量,必须将操作后的结果存回到变量中。
  • 在比较运算符两边各添加一个空格,可以让代码阅读起来更容易。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值