想要学Python很久了。一是流行,再是强大。现在写一篇博客,整理一下常用的知识点,以备复习。
1.数据类型
数据
Python可以处理任意大小的整数
可以用0xff00的方法表示十六进制整数
浮点数处理的精度也比较高,但是太高精度需要用科学记数法表示
字符串用单引号或双引号括起来
转义字符大体同C
大量需要转义字符的地方,可以简写成:r’\\\\\’
Python允许字符串内换行,使用…来表示:1
2
3print(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的特点
- 查找和插入的速度极快,不会随着key的增加而变慢;
- 需要占用大量的内存,内存浪费多。
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也有if和else语句,但是和C比起来又显得非常“任性”。它没有小括号,也没有大括号,具体例子如下:1
2
3
4age = 20
if age >= 18:
print("your age is %d",age)
print('adult')
根据Python的缩进规则,如果满足if后的条件,则会执行缩进的两个print语句,else也类似:1
2
3
4
5
6
7age = 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
8if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
循环
for…in循环,可以依次将list或tuple中的每个元素迭代出来:1
2
3names=['tom','cat','apache']
for name in names:
print(name)
执行这段代码,就会依次打印出names中的每个元素:1
2
3tom
cat
apache
for x in …循环,可以将元素依次代入变量x,然后执行缩进的语句,例如:1
2
3
4sum=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
4sum=0
for x in range(101):
sum+=x
print(sum)
Python中也有while循环,用法和C类似:1
2
3
4
5
6sum=0
n=0;
while n<101:
sum+=n
n+=1
print(sum)