python基础知识汇总(实用)
什么是python:
官方解释:一种解释型的、面向对象的、带有动态语义的高级程序设计语言。
优点:简单、强大,程序员在编程时能够保持自己的风格,容易实现自己想要的功能,程序清晰易懂。
历史: Guido van Rossum在20世纪90年代初创造了这门语言。
- 使用包管理器安装python,如通过yum安装;
- 从源文件编译安装python:
- 下载源代码;下载扩展名为.tgz的文件保存到本地某一目录下;
- 进入该目录,使用tar –xzvf python-2.6.4.tgz对文件解压缩;
- 进入已解压的文件目录,cd python-2.6.4运行以下命令:
./configure --prefix=$(pwd)
make
make install
- 将当前文件夹路径放到环境变量PYTH中。
在python脚本首行写上“#!/usr/bin/env python”后,不管python二进制文件在哪里,程序都会自动执行。
若系统中安装了新版本的python,同时旧版本仍然存在,那么应该直接指明新版本路径,如:#!/usr/bin/python2.6
安装了python并设置了环境变量后,输入python进入交互式解释器。
在交互式解释器中可以直接计算出表达式的值,如
输入1+1后按回车,输出2
输入1/2,输出0(因为计算结果的小数部分被截除了)
输入1/21.0/2,输出0.5
输入1//2,输出0;输入1.0//2.0,输出0.0(//双斜线表示进行整除)
内建函数:
input():使用input函数接收输入值,如x=input(),输入12,则x=12
pow(2,3)=8
abs(-10)=10
round(1.8/2)=1.0, 四舍五入了
模块:
- math.floor(1.8/2)=0.0, 向下取整
floor函数不能直接用,要先加载math模块: import math
import math
int(math.floor(32.9))
输出:32
(2)另外用下面的方式直接import函数,不需要在函数前加上模块名了:
from math import floor
int(floor(32.9))
变量:
可以使用变量来引用函数,即将某个函数赋给一个变量:
foo=math.sqrt
foo(4)
输出:2.0
- 字符串拼接:+
x="I'm x! "
y="I'm y! "
x+y
输出:"I'm x! I'm y! "
- 数值转化成字符串
str、repr与反引号``:可将数值转化成字符串
str 会把值转换为合理形式的字符串;
repr会创建一个字符串,以合法的python表达式的形式来表示值。
如:print str("Hello world!") 输出:Hello world!
print repr("Hello world!") 输出:'Hello world!'
反引号:`` (python3.0中已不再使用反引号,建议用repr)
可以将数字与字母连接在一起,如:
temp=42
print "temp is: " + `temp` 输出:temp is: 42
print `temp` + "and" + `123` 输出:42and123
使用用repr或str:
print "temp is: " +repr(temp) 输出:temp is: 42
print "temp is: " +repr(temp) + str("123") 输出:temp is: 42123
- 多行字符串
长字符串跨多行时,用三个单引号或三个双引号,这样在字符串中可以同时使用单引号和双引号。
普通字符串跨多行时,也可在行尾用反斜线”\”,如:
print “Hello, \
how are you? “
输出:Hello, how are you?
- 原始字符串
输出原始字符串时字符串前面带’r’,如:
print r'C:\programe file\now\new' 输出:C:\programe file\now\new
print r"C:\new let's go!" 输出:C:\new let's go!
Python中最基本的数据结构是序列(sequence),序列中每个元素被分配一个序号——即元素的位置,也称为索引,第一个索引是0,最后一个元素索引标记为-1。
Python中包含6种内建序列:
列表、元组、字符串、unicode字符串、buffer对象、xrange对象。
所有序列类型都可以进行的特定操作如下:
索引(indexing)
分片(sliceing)
加(adding)
乘(multiplying)
成员资格(检查某个元素是否属于序列)
-
-
-
- 索引
-
-
序列中所有元素都是有编号的,从0开始递增。元素可以通过编号进入访问。
实例:
#!/usr/bin/python
months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec']
endings = ['st','nd','rd'] + 17* ['th'] + ['st','nd','rd'] + 7* ['th'] + ['st']
year = raw_input("year: ")
month = raw_input("month: ")
day = raw_input("day: ")
month_num = int(month)
day_num = int(day)
month_name = months[month_num-1] #索引
day_ord = day + endings[day_num-1] #索引
print month_name + ' ' + day_ord + ' ' + year
输入year: 2011
month: 12
day: 21
输出:Dec 21st 2011
-
-
-
- 分片
-
-
使用索引可以访问单个元素,使用分片可以访问一定范围内的元素。
分片需要提供两个索引作为边界,用冒号分隔两个索引,第1个索引的元素包含在分片内,第二个索引的元素不包含在分片内,如:
tag='http://www.python.org'
tag[7:21]
输出:'www.python.org'
注:tag[7:21],取第7到第20个字符。
若想包含从第一个开始(或直到最后一个结束)的字符串,可以将前一个(或后一个)索引置空,如:tag[:5], tag[7:], tag[:]
步长:分片中的第三个值(开始与结束索引之后)
如:
idx=[1,2,3,4,5,6,7,8,9,10]
idx[::2] 输出:[1, 3, 5, 7, 9]
idx[::-1] 输出:[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
-
-
-
- 序列加法
-
-
两种相同类型的序列才能进行连接操作,如:
[1,2,3] + [4,5,6] 输出:[1, 2, 3, 4, 5, 6]
‘hello’ + ’_’ + ‘world’ 输出:’hello_world’
不同类型序列不能相加,如:[1,2,3] + ‘hello’ 提示出错
-
-
-
- 序列乘法
-
-
数字x与序列相乘后,原序列被重复x次。
[12] * 10 输出:
列表初始化,创建10个元素空间但没有值:[None] * 10
-
-
-
- 成员资格
-
-
in运算,检查一个值是否在序列中。
例1:
users=['taobao', 'alibaba', 'root']
input_name=raw_input('Enter your user name: ')
if input_name in users:
print input_name + ' is in users!'
else:
print 'Warning! ' + input_name + ' is not in users!'
例2:
db = [
['smith','4309'],
['jones','0921'],
['alber','8745'],
]
username = raw_input('user name: ')
pin = raw_input('pin code: ')
if [username, pin] in db:
print 'Access granted!'
else:
print 'Warning: username or pin is error!'
列表与元组的区别:列表可以修改,元组不可以修改。
列表的元素写在方括号中,元素间用逗号隔开,如:edward = [‘Edward’,29,’hangzhou’]
- 元素赋值:如x[1]=0
- 删除元素:
names = [‘Alice’, ‘Beth’, ‘Earl’, ‘Dimdo’]
del names[2]
结果names = [‘Alice’, ‘Beth’, ‘Dimdo’]
- 分片赋值:
可以一次为多个元素赋值:
name = list(‘perl’)
name[1:] = list(‘ython’)
结果name = [‘p’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’]
可以实现插入元素:
num = [1, 5]
num [1:1] = [2, 3, 4]
结果num = [1, 2, 3, 4, 5]
可以实现删除元素:
num = [1, 2, 3, 4, 5]
num[2:4] = []
结果num = [1, 2, 5]
- append增
num = [1,2,3]
num.append(4)
结果 num = [1,2,3,4]
- count计数
x = [‘to’, ‘be’, ‘or’, ‘not’, ‘to’, ‘be’]
x.count(‘to’)
结果为2
- extend延伸
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
结果a = [1, 2, 3, 4, 5, 6]
- index索引
a=['who', 'am', 'i', '?']
a.index('?')
结果为3
- insert代替
num = [1, 2, 3, 4, 5]
num.insert(3, ‘four’)
结果num = [1, 2, 3, ‘four’, 4, 5]
- pop:移除列表中的一个元素,并且返回该元素的值,如:
x = [1, 2, 3]
x.pop() 返回3
x.pop(1) 返回2
- remove:移除表中某个值
x = [‘to’, ‘be’, ‘or’, ‘not’, ‘to’, ‘be’]
x.remove(‘be’)
结果 x = [‘to’, ‘or’, ‘not’, ‘to’, ‘be’]
- reverse:将列表中的元素反向存放
x = [1, 2, 3]
x.reverse()
结果 x = [3, 2, 1]
- sort:对原列表进行排序,返回值为空
x = [5, 1, 2, 4, 3, 6]
y=x.sort()
结果 x = [1, 2, 3, 4, 5, 6]
y无值
sorted()函数:
x = [5, 1, 2, 4, 3, 6]
y=sorted(x)
结果 x = [5, 1, 2, 4, 3, 6]
y = [1, 2, 3, 4, 5, 6]
- 比较函数cmp():
cmp(1,2) 返回-1
cmp(1,1) 返回0
cmp(2,1) 返回1
元组是不可变序列。
空元组:()
一个值的元组:1, 或 (1,) 其中逗号不可省略
多个值的元组:1, 2, 3 或(1, 2, 3)
2*(2+3) 输出10 #没有逗号,普通的值计算
2*(2+3,) 输出(5, 5) #有逗号,表示是一个元组,相乘后得到一个新的元组,有两个值