想要学Python很久了。一是流行,再是强大。现在写一篇博客,整理一下常用的知识点,以备复习。

1.数据类型

数据

Python可以处理任意大小的整数
可以用0xff00的方法表示十六进制整数


浮点数处理的精度也比较高,但是太高精度需要用科学记数法表示


字符串用单引号或双引号括起来
转义字符大体同C
大量需要转义字符的地方,可以简写成:
r’\\\\\’
Python允许字符串内换行,使用…来表示:

1
2
3
print(str1
...str2
...str3)


布尔值:true false
可使用and or not 运算


Python中的强制类型转换方法如下:

1
2
>>>s=input('birth:')
>>>birth=int(s)

注意,input()返回的数据类型是str。

运算符

/ 除法,结果一定是浮点型
// 整除
% 求余

2.字符串和字符编码

字符串和整数的转换

ord()函数,获取字符的整数表示
chr()函数,把编码转换成对应的字符
可以使用转义字符表示,例如:\u4e2d会显示代表的汉字”中”

字符串和字节

str是字符串类型
bytes是字节类型,需要用带b前缀的单引号或双引号表示:
x=b’ABC’
‘ABC’b’ABC’占用的内存不同,后者每个字符都只占用一个字节
encode()方法可以把str转换成指定的bytes,例如:

1
2
>>>'ABC'.encode('ascii')
>>>'中文'.encode('utf-8')

把字节转换成字符串需要使用decode()方法:

1
>>>'ABC'.decode('ascii')

len()函数,用于计算str中的字符数和bytes中的字节数(英文字符只占一个字节,中文字符经常占3个字节)


要保证编译的python文件能够正确显示中文,我们除了在编写环境中指定编码类型为utf-8之外,通常还要在开头加上两行:

1
2
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

replace()方法,用于取代字符串中某个字符,但是不影响字符串本身:

1
2
3
4
5
>>>a='abc'
>>>a.replace('a','A')
'Abc'
>>>a
'abc'

格式化

同C的格式化类似

1
>>> 'Hello, %s' % 'world'

%开头的叫做占位字符,常用的占位字符有:

%    整数


%f    浮点数


%s    字符串


%x    十六进制整数


格式化整数和浮点数可以指定是否补0或者确定小数的位数

1
2
3
4
>>> '%2d-%02d' % (3, 1)
' 3-01'
>>> '%.2f' % 3.1415926
'3.14'

3.list和tuple

list

list是Python内置的一种数据类型,列表。它是一种有序的集合,可以随时添加和删除其中的元素,声明方式如下:

1
>>>name=['tom','cat','car']

可以使用len()函数获取list元素的个数
用索引来访问每个元素,索引从0开始:

1
2
>>>name[0]
tom

可以使用-1做索引,访问最后一个元素,依次类推,可以访问倒数第二,第三个元素:

1
2
3
4
>>>name[-1]
car
>>>name[-2]
cat

可以使用append()方法,向list中追加元素到末尾:

1
2
3
>>>name.append('apple')
>>>name
['tom','cat','car','apple']

可以使用insert()方法,将元素插入到指定位置,比如下标为1的位置:

1
2
3
>>>name.insert(1,'banana')
>>>name
['tom','banana','cat','car','apple']

可以使用pop()方法,删除list末尾的元素:

1
2
3
>>>name.pop()
>>>name
['tom','banana','cat','car']

可以使用pop(i)方法,删除指定位置的元素:

1
2
3
>>>name.pop(1)
>>>name
['tom','cat','car']

可以使用直接赋值的方法将某元素替换成别的元素:

1
2
3
>>>name.[2]='apache'
>>>name
['tom','cat','apache']

list中可以存放不同类型的元素,也可以存放list(可以看做二维数组)
如果list中没有元素,就是一个空list,长度为0。

tuple

tuple叫做元组,一旦初始化就不能修改,可以使用索引来访问每个元素,但是不能赋值成另外的元素。因为它无法被修改,所以更加安全。

tuple的定义方法:

1
2
3
4
5
6
7
8
9
10
11
>>>t=(1,2)
>>>t
(1,2)
>>>t=()
>>>t
()
>>>t=(1,)
>>>t
(1,)

不能使用t=(1)的方法来定义只有一个元素的tuple,这会让python认为它是个括号,而将t认为是一个整形变量。

4.dict和set

dict

dict即C++中的map,全称是dictionary,具有极快的查找速度。它的元素有两种,一种叫做key,另一种叫做value。前者是查询的参数,后者则是它所对应的值。dict的声明方法如下:

1
2
3
>>>d={'tom':90,'cat':80,'apache':70}
>>>d['tom']
90

当然,我们在“放入”的时候也很方便:

1
2
3
>>>d['apache']=60
>>>d['apache']
60

每个key只对应一个值,后面赋的值会将前面的覆盖。

我们可以使用in来判断一个key是否存在:

1
2
>>>'toom' in d
False

可以使用get方法来获取指定的value。如果不存在,可以返回指定的值:

1
2
3
4
>>>d.get('tom')
90
>>>d.get('tomm',-1)
-1

dict的特点

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

set

set是一组key的集合,但不存储value。因为key不能重复,所以在set中没有重复的元素。要创建一个set需要提供一个list作为输入集合:

1
2
3
4
5
6
7
>>>s=set([1,2,3])
>>>s
{1,2,3}
>>>s=set([1,1,2,2,3,3])
>>>s
>{1,2,3}

通过add(key)方法可以添加到set中:

1
2
3
>>>s.add(4)
>>>s
{1,2,3,4}

通过remove(key)方法可以删除元素:

1
2
3
>>>s.remove(4)
>>>s
{1,2,3}

set可以看成无序无重复元素的集合,可以进行交集,并集等操作:

1
2
3
4
5
6
>>>s1=set([1,2,3])
>>>s2=set([2,3,4])
>>>s1&s2
{2,3}
>>>s1|s2
{1,2,3,4}

5.判断与循环

判断

Python也有ifelse语句,但是和C比起来又显得非常“任性”。它没有小括号,也没有大括号,具体例子如下:

1
2
3
4
age = 20
if age >= 18:
print("your age is %d",age)
print('adult')

根据Python的缩进规则,如果满足if后的条件,则会执行缩进的两个print语句,else也类似:

1
2
3
4
5
6
7
age = 3
if age >= 18:
print('your age is', age)
print('adult')
else:
print('your age is', age)
print('teenager')

注意不要少写了

Python中还有elif语句,也就是else if的缩写,所以if语句的完整版就是:

1
2
3
4
5
6
7
8
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>

循环

for…in循环,可以依次将list或tuple中的每个元素迭代出来:

1
2
3
names=['tom','cat','apache']
for name in names:
print(name)

执行这段代码,就会依次打印出names中的每个元素:

1
2
3
tom
cat
apache


for x in …循环,可以将元素依次代入变量x,然后执行缩进的语句,例如:

1
2
3
4
sum=0;
for x in [1,2,3,4,5,6,7,8,9,10]:
sum+=x;
print(sum)

这段代码显示的结果是0-10的累加和

Python提供了range()函数来生成一个整数序列,比如range(5)生成的是从0开始的5个整数:

1
2
>>>list(rangr(5))
[0,1,2,3,4]

则0累加到100的程序可以写成:

1
2
3
4
sum=0
for x in range(101):
sum+=x
print(sum)


Python中也有while循环,用法和C类似:

1
2
3
4
5
6
sum=0
n=0;
while n<101:
sum+=n
n+=1
print(sum)