Python-基础语法总结

I. 从类型开始

1. 数据表达

  • 1字节=8比特(1B=8b)
  • 一字节也可以表示0-255的整数
  • 进位以1024为单位:

1kb=2^10 bytes
1Mb=2^10 kb=2^20 bytes
etc.

2. 对象

对象:Python中各种数据的抽象。

  • 标识id(identity): 对象一旦创建其ID不再改变,可以看成该对象在内存中的地址, id(x) 返回对象x的ID, a is b 判别 a和b是否同一个对象(ID是否相同 )
  • 类型(type):决定了对象可能取值范围以及支持的操作。
    强类型语言type(x) 返回对象x的类型
  • 值(value): 值可能改变或者不可变,决定于其类型
  • 不可变(immutable):有些对象一旦创建其值不可变,比如数字、字符串、元组等
  • 可变(mutable): 对象的值可以改变,比如列表、字典等

内置函数type(object)用来返回object的类型
内置函数isinstance(obj,class)用来测试对象obj是否为指定类型class的实例

Python具有自动内存管理功能

  • 跟踪所有的对象,并自动删除不再有变量指向的对象。
  • 可以显式使用del语句回收那些不再需要的对象所占用的资源
  • del x

3. 浮点精度

  • 浮点数字面值:浮点数用于表示实数,在内部采用科学计数法表示,因此称为浮点数
  • 小数表示:3.14 10. .001
  • 科学计数法:15e-2 ( =15*10-2 = 0.15) 3.14e-10 1.0e100

需要说明的是由于计算机内部采用二进制表示,与其他语言一样采用IEEE 574双精度表示浮点数时,有精度误差
a= 0.1 + 0.1 + 0.1
a == 0.3 结果为 False
Python提供了decimal模块(高精度浮点数Decimal)用于十进制数学计算,来保证用户指定的精度
fractions模块用于表示分数

>>>from decimal import Decimal
>>>Decimal.(0.1)
Decimal('0.1000000000000000055511151231257827021181583404541015625') 
>>>from fractions import Fraction 
>>>Fraction('3/7')
Fraction(3, 7)

4. 运算符

  • 优先级顺序:
+ -
* / // %
singal: + -
**
加法、减法:  35+4    2.5 + 3.5   
乘法: (35+4)*5 ,3.4*5.2 + 4 ###注意*不能省略  
除法:  
整除: 5//2  = 2  
浮点除法,结果为浮点数:5/2 = 2.5    10/3.2 = 3.125  
幂运算:     4**2 = 16     4**0.5 = 2.0  
取余(求模) %:  10%5 = 0    20% 3 = 2     -20%3 = 1   
一元的改符号 +、-  :+8   -8    
  • 上述运算符支持两个不同的数字类型的对象之间的运算,即混合运算,比如浮点数+整数

II. 列表与切片操作

keynote:

list.append()
list.sort()
list.sorted()
list.reverse()
list.reversed()

浅拷贝vs深拷贝

1. List()

  • 序列:列表、元组、字典、字符串、集合
list.append(x)  ##将x添加至列表尾部
list.extend(L)  ##将列表L中所有元素添加至列表尾部
list.insert(index,x)  ##在列表指定index处添加x
list.remove(x)  ##删除首次出现的x
list.pop([index])  ##删除列表中所有的元素,但保留列表对象
list.clear()  ##删除所有列表元素,但保留列表
list.index(x)  ##返回首个x的下标
list.count(x)  ##计算x出现的次数
list.reverse()  ##原地逆序
list.sort()  ##原地排序
###注意:y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本。
可以用sorted()返回一个有序副本
list.copy()  
del list  ##删除整个列表

range(start,stop,step)
乘法可以扩展列表:

>>> list=[1,2,3]
>>> list=list*3
>>> list
[1,2,3,1,2,3,1,2,3]

“*”运算符还可以用来创建多维数组,但需要注意的是通过乘法复制并不创建元素值的复制,而是创建已有元素对象的引用复制。因此,当修改其中一个值时,相应的引用也会被修改
用del list[]或pop.list()可以删除指定位置的元素

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]

2.切片操作

list[x:y:z]–x表示起始,y表示终止,z表示步长(可以为负)

  1. 使用切片来截取列表中的任何部分,得到一个新列表
  2. 使用切片来原地修改列表内容
  3. 使用del+切片来删除列表元素

3.排序

list.sort()可以用来给列表排序

>>> aList = [3, 4, 5, 6, 7, 9, 11, 13, 15, 17]
>>> import random
>>> random.shuffle(aList)
>>> aList
[3, 4, 15, 11, 9, 17, 13, 6, 7, 5]
>>> aList.sort()				#默认为升序排列
>>> aList.sort(reverse = True)			#降序排列
>>> aList
[17, 15, 13, 11, 9, 7, 6, 5, 4, 3]
>>> aList.sort(key = lambda x:len(str(x)))	#自定义排序
>>> aList
[9, 7, 6, 5, 4, 3, 17, 15, 13, 11]

使用内置函数sorted可以排序并且返回一个新列表:

>>> aList
[9, 7, 6, 5, 4, 3, 17, 15, 13, 11]
>>> sorted(aList)
[3, 4, 5, 6, 7, 9, 11, 13, 15, 17]
>>> sorted(aList,reverse = True)
[17, 15, 13, 11, 9, 7, 6, 5, 4, 3]

III. 字典和映射

keynote

字典是包含key-value映射对的可变序列;

key不允许重复,可以为仁矣不可变对象,比如整数、实数、复数、字符串、元组等;

value可以算任何对象,每个key对应一个值;

### create a dict
mydict =  {
   key1:object1,...}

### a way to create dict.objects with same values
### dict.fromkeys(keys,values)
>>> dict.fromkeys('zqg','sb')
{
   'z': 'sb', 'q'
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值