Python学习笔记——基础

1. 基础

使用pycharm进行python学习
REPL:read evaluate print loop,交互式命令行
注意:作用域只有函数和类作用域,其他的变量都是全局的

1.1 hello world

print("hello world") # 带换行
print("hello world", end="") # 换行替换成空字符串

1.2 注释

单行:#
多行:'''"""进行包裹

1.3 数据类型

获取数据类型:type(数据),如type(18),输出为:<class 'int'>

数据类型有:int float str

1.3.1 整数

十进制:15
二进制:0b1010
八进制:0o12345
十六进制:0x12345

进制转换:(结果为字符串)
bin():10转2进制
oct():10转8进制
hex():10转16进制

创建整数:int(),接收整数、小数、字符串,第二个参数用于指定进制
int():默认返回0
int(89):返回89
int(89.9):返回89
int('89'):返回89
int('11110001',2):返回该2进制数的十进制数形式

1.3.2 浮点

创建浮点数:float(),同上
float():默认0.0
float(2.3e8):可以使用科学计数法

注意:浮点数存在精确问题:print(1.1+2.2-3.3)
解决方案:

  1. decimal模块,小数
from decimal import Decimal

Decimal('1.1')+Decima('2.2')-Decimal('3.3') # 结果为0.0
  1. fractions模块,分数
from fractions import Fraction

Fraction(11,10)+Fraction(22,10)-Fraction(33,10) # 结果为0.0

1.3.3 布尔类型

有两个值:True False
True == 1
False == 0
True+False+5 :结果为6

1.4 运算符

常见的:+ - * /
特殊的:整数除://,如:print(9//4)结果为2
特别注意:整数除在存在负数的情况为:倍数求解,即被除数=除数*倍数+余数,一个原则是:余数必须在[除数,0]或[0,除数]之间!

9 // 4 # 2
9 // -4 # -3  9 = -4 * -3 + -3
-9 // 4 # -2  -9 = 4 * -3 + 3
-9 // -4 # 2   -9 = -4 * 2 + -1

取余运算符:%

9 % 4 # 1
1.25 % 0.5 # 0.25
9 % -4 # -3
-9 % 4 # 3
-9 % -4 # -1

幂运算:**,如:3**2,结果为9,或使用pow(3,2)
布尔运算:and or not
赋值运算符:=,支持连等赋值!
赋值加运算:+= -= *= /=
比较运算符:> < == >= <= != is is not(is用于比较是否是同一对象,比较地址)

a=b=[1,2]
c=[1,2]
a==b #True
a==c #True
a is b #True
a is c #Flase

1.4.1 不可变类型对象比较is

注意:不可变对象内存可能会被重用

a = 18
b = 18
id(a) == id(b) #True
a is b #True

1.4.2 链式比较

a = 5
0 < a < 10 #True
1 == 2 < 3 #False
1 == 2 and 2 < 3 #False

1.5 关键字

查看所有关键字:help()进入手册,再查询keywords
导入keyword模块也可以看到:

import keyword
keyword.kwlist

1.6 标识符

命名规则:区分大小写,不能为关键字,字母数字下划线的组合,不能以数字开头

1.7 None

用于表示数据不存在,该对象占据内存空间,常用于初始化或重置对象:a = None

1.8 运算符优先级和结合性

优先级相同时,看结合性,加减乘除都是左,赋值运算为右,and优先于or结合性都为左
建议使用小括号

1.9 range类

一种序列类型,表示不可变整数序列,包头不包尾
格式:
range(stop)
range(start,stop)
range(start,stop,step)

整数序列起始值默认为0,默认步长为1

print(list(range(5)) # [0,1,2,3,4]
print(list(range(0,-4,-20)) # [0,-4,-8,-12,-16]

注意:range()函数返回的是一个迭代器对象,可以使用list()进行转换
注意:range对象优点:节省内存空间,所有range对象使用空间都相同,只有使用时才会去计算
注意:range属于序列类型,可以使用innot in来检查其中是否包含值

1.10 列表

相似的有:列表、元组、字典、集合

特点:

  1. 内部数据都是有序的
  2. 每个数据都有两个整数索引:通过任意索引总能映射到唯一数据
  3. 列表数据可重复
  4. 列表数据可存储任意类型,可以混合存储
  5. 列表占用空间会动态改变,增加或减少

列表长度:len(列表)

1.10.1 创建列表

格式:[],如:a = [1,2,'3']
格式:list(),如:list([1,2,'3'])

1.10.2 列表元素的索引

每个元素都有两个整数类型的索引,一正一负:
正索引:左侧从0开始,依次增1
负索引:右侧从-1开始,依次减1

获取索引:只返回第一个匹配元素的正索引:index(元素,[start[,stop]]):如L.index(3),如果列表中不存在指定元素会报错

1.10.3 获取列表元素

列表[索引]:如L[10]L[-4],如果索引不存在会报错,索引越界

列表[start:stop:step]:切片,得到原始列表的拷贝,不包括stop元素
不指定step,默认步长1
当step为正:(正向)
不指定start,默认第一个元素
不指定stop,默认最后一个元素

当step为负:(反向)
不指定start,默认最后一个元素
不指定stop,默认第一个元素

注意:切片允许索引越界!!超出索引则默认取到边界值

slice(start,stop,step):内置函数切片,start,stop和step默认都是None

L[1:7]
L[slice(1,7,None)]

1.10.4 判断是否存在指定元素

in:判断,存在True,不存在False,5 in L
not in:判断,不存在True,存在False,5 not in L

1.10.5 修改元素

L[2]=5:一次改一个
L[1:4]=[1,9,2]:一次改多个
L[1:4]=[9]

1.10.6 增加元素

列表.append(元素值):列表追加
列表.extend(列表):列表连接
列表.insert(索引,元素):在某个索引位插入元素
L[2:2]=[8,9,0]:在索引为2的位置插入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值