python需要注意的语法

1、=

理解变量在计算机内存中的表示也非常重要。当我们写:

a = 'ABC'

时,Python解释器干了两件事情:

  1. 在内存中创建了一个'ABC'的字符串;

  2. 在内存中创建了一个名为a的变量,并把它指向'ABC'

2、除法

/除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数:

>>> 9 / 3
3.0

还有一种除法是//,称为地板除,两个整数的除法仍然是整数:

>>> 10 // 3
3

你没有看错,整数的地板除//永远是整数,即使除不尽。要做精确的除法,使用/就可以。

因为//除法只取结果的整数部分,所以Python还提供一个余数运算,可以得到两个整数相除的余数:

>>> 10 % 3
1

无论整数做//除法还是取余数,结果永远是整数,所以,整数运算结果永远是精确的。

3、编码问题

用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:

rw-file-utf-8

浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器:

web-utf-8

所以你看到很多网页的源码上会有类似<meta charset="UTF-8" />的信息,表示该网页正是用的UTF-8编码。

Python的字符串

搞清楚了令人头疼的字符编码问题后,我们再来研究Python的字符串。

在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言,例如:

>>> print('包含中文的str')
包含中文的str

对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'

在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:

>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'

你可能猜到了,%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。

常见的占位符有:

%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
4、list

list是一个有序的集合,可随时添加和删除其中的元素。和数组类似。

用索引访问list中的元素,0表示第一个;-1表示最后一个元素,同理-2表示倒数第2个;

可以往list追加元素到末尾。

classmates = [q,w,e,r]

classmates[0] :q

classmates[-1]: r

list的长度:len(classmates)

附加元素:classmates.append("a")   :classmates = [q,w,e,r,a]

插入元素:classmates.insert(1,'f'):   classmates = [q,f,w,e,r,a]

删除末尾元素:classmates.pop():      a   classmates = [q,f,w,e,r]

删除指定位置的元素:classmates.pop(1):  f  classmates = [q,w,e,r]

某个元素替换:classmates[0]=Q:    classmates = [Q,w,e,r]

list元素也可以是另外一个list

5、tuple

tuple也是有序列表,叫元组,但是一旦初始化就不能修改

t=(1,2,3)

6、dic  (dictionary)

就是map 使用键-值(key-value)存储,有很快的查询速度

 d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
d['Michael]=95

判断key是否存在  :

1)"Thomas' in d:   False

2)d.get("Thomas") key不存时返回none,命令行不显示结果。

删除一个key:d.pop('Bob'):   75

和list比较,dict有以下几个特点:

  1. 查找和插入的速度极快,不会随着key的增加而增加;
  2. 需要占用大量的内存,内存浪费多。

而list相反:

  1. 查找和插入的时间随着元素的增加而增加;
  2. 占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。

dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象

这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。

要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key:

7、set

 set是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算

要创建集合,可使用set()函数并像下面这样提供一系列的项

s= set([3,5,9,10]) 

s:  {3,9,10,5}

添加一项s.add('4'):      s{3,4,10,5,9}

添加多项s.update([10,37]):  s{3,4,10,5,9,37}  10并没有添加进去,因为重复了

删除一项s.remover('5')

set的长度:len(s)

x是否是s的成员:x in s

  1. 怎么去除海量列表里重复元素,用hash来解决也行,只不过感觉在性能上不是很高,用set解决还是很不错的,示例如下:  
  2.   
  3. >>> a = [11,22,33,44,11,22]  
  4. >>> b = set(a)  
  5. >>> b  
  6. set([33114422])  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值