20150124今天复习python基础教程书,记录下并总结下基础知识

第一章:python基础知识,安装python开发环境

幂次方:

>>> print 2**32
4294967296
>>> x=pow(2,64)
>>> print x
18446744073709551616

四舍五入

>>> round(5.2)
5.0
>>>
>>> round(5.8)
6.0

绝对值

>>> abs(-10)

10

等待用户输入

>>> input("please input  you
name:")
please input  you name:2

2

求平方

>>> from math import sqrt
>>> sqrt(81)

9.0

负数平方,正常导入cmath复数函数,非from .. import 语句,其中j为虚数,或者(J)表示

正如长整数(L)一样

>>> import cmath
>>> sqrt(-81)
Traceback (most recent call last):
File "", line 1, in
sqrt(-81)
ValueError: math domain error
>>> cmath.sqrt(-81)
9j

注释#

'''三个引号,代替普通引号,长字符跨多行

>>> print """ hello word
Test ok
"""
hello word
Test ok

第二章:列表[]和元组()

通常理解为数据结构中的数组,元素分配序号(索引),从0开始索引

2.1如何理解列表,及序号访问数组;字符串也是由字母组成的列表同理

月份序数

>>> endings= ['st','nd','rd'] + 17* ['th'] +
['st','nd','rd'] + 7*['th'] +['st']
>>> endings[21]
'nd'
>>> ordinal = '22' + endings[21]
>>> print ordinal
22nd
>>> ordinal = '17' + endings[16]
>>> print ordinal

17th

年份列表

>>> months =[

'January',

'February',

'March',

'April',

'May',

'June',

'July',

'August',

'September',

'October',

'November',

'December'

]

>>> months[4]

'May'

2.2 切片

默认步长为1,步长为负数则从右到左提取元素

格式如:列表[起始索引:结束索引:步长]

>>> tag='hello word'
>>> tag[4:]
'o word'
>>> tag[2:-1]
'llo wor'
>>> tag[-3]
'o'
>>> tag[-3:]
'ord'
>>> tag[2::2]
'lowr'
>>>

2.3序列相加,只有相同类型的列表才能相加

乘法则是重复列表多少次

>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
>>> 'Hello,' + 'word!'
'Hello,word!'
>>> [ 1,2,3] + 'Hello'
Traceback (most recent call last):
File "", line 1, in
[ 1,2,3] + 'Hello'
TypeError: can only concatenate list (not "str") to list
>>>
>>> 'Hello'*4
'HelloHelloHelloHello'
>>> [1,2,3]*4
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
>>>

2.4 成员资格,检查成员是否在列表之中

>>> a=[1,2,3]
>>> 2 in a
True
>>> a='Hello word'
>>> h='o'
>>> h in a
True
>>>
>>> p in python
Traceback (most recent call last):
File "", line 1, in
p in python
NameError: name 'p' is not defined
>>> 'p' in 'python'

2.5 内置函数

len求长度,min最小值,max最大值,list列出,append附加到最后一个,count是统计元素多少个,

extend是扩展列表并修改原列表

index 第一个匹配的索引位置

insert指定插入元素

pop出栈,后进先出原则(LIFO Last in First out), append则是入栈

del array[3]则是删除第4个元素

remove删除第一个匹配元素

reverse 返回存放

>>> array=[1000,8,79]
>>> len(array)
3
>>> min(array)
8
>>> max(array)
1000
>>> list(array)
[1000, 8, 79]
>>> list(array)
[1000, 8, 79]
>>> array.append(4)
>>> array
[1000, 8, 79, 4]
>>> del array[4]
Traceback (most recent call last):
File "", line 1, in
del array[4]
IndexError: list assignment index out of range
>>> del array[3]
>>> array
[1000, 8, 79]
>>> array.append(1000)
>>> array.count(1000)
2
>>> b=[1,2,4]
>>> array.extend(b)
>>> array
[1000, 8, 79, 1000, 1, 2, 4]
>>> array.index(79)
2
>>> array.index(1000)
0
>>> array.insert(3,'3')
>>> array
[1000, 8, 79, '3', 1000, 1, 2, 4]
>>> array.pop()
4
>>> array
[1000, 8, 79, '3', 1000, 1, 2]
>>>
>>> array.pop()
2
>>> array
[1000, 8, 79, '3', 1000, 1]
>>> array.remove(1000)
>>> array
[8, 79, '3', 1000, 1]
>>>
>>> array.reverse()
>>> array
[1, 1000, '3', 79, 8]
>>>
>>> array.sort()
>>> array
[1, 8, 79, 1000, '3']
>>>
>>> array.sort()
>>> array
[1, 8, 79, 1000, '3']
>>>

2.6排序

其中列表复制副本,不能y=x,因为还是指定原列表

>>> y=x[:]则是复制所有元素

排序还有为保存为列表,需要复制副本,此时要注意,或者直接使用sorted函数

sort()函数默认为cmp比较排序,高级排序则指定方式

>>> x=[3,4,1,5]
>>> y=x
>>> y
[3, 4, 1, 5]
>>> y.sort()
>>> y
[1, 3, 4, 5]
>>> x
[1, 3, 4, 5]
>>> x=[3,4,1,5]
>>> y=x[:]
>>> y.sort()
>>> y
[1, 3, 4, 5]
>>> x
[3, 4, 1, 5]
>>> x=[4,3,2,5]
>>> y=sorted(x)
>>> x
[4, 3, 2, 5]
>>> y
[2, 3, 4, 5]

sort()函数默认为cmp比较排序,高级排序则指定方式,类如长度排序

>>> x=['Helloword','abcdefg','add','love']
>>> x.sort(key=len)
>>> x
['add', 'love', 'abcdefg', 'Helloword']
>>> x.reverse()
>>> x
['Helloword', 'abcdefg', 'add', 'love']
>>>

2.7 冒泡排序

>>> array=[2,4,1,3,7,10,9]
>>> for i in range(len(array)-1,0,-1):
print i
print array
for j in range(0,i):
print j
if array[j] >array[j+1]:
array[j],array[j+1]=array[j+1],array[j]
6
[2, 4, 1, 3, 7, 10, 9]
0
1
2
3
4
5
5
[2, 1, 3, 4, 7, 9, 10]
0
1
2
3
4
4
[1, 2, 3, 4, 7, 9, 10]
0
1
2
3
3
[1, 2, 3, 4, 7, 9, 10]
0
1
2
2
[1, 2, 3, 4, 7, 9, 10]
0
1
1
[1, 2, 3, 4, 7, 9, 10]
0
>>>
>>>

第一次外循环 i=6, 内循环 j=0

-->j=6,第一次内循环结束时,最大值10在最后array[6]

[2, 1, 3, 4, 7, 9, 10]

第二次外循环 i=5, 内循环 j=0-->j=5

第二次内循环结束时,最二大值9在最后array[5]

[1, 2, 3, 4, 7, 9, 10]
...
>>> for i in range(len(array)-1,0,-1):
print i
print array
for j in range(0,i):
print j
if array[j] >array[j+1]:
array[j],array[j+1]=array[j+1],array[j]
6
[1, 2, 5, 3, 6, 8, 4]
0
1
2
3
4
5
5
[1, 2, 3, 5, 6, 4, 8]
0
1
2
3
4
4
[1, 2, 3, 5, 4, 6, 8]
0
1
2
3
3
[1, 2, 3, 4, 5, 6, 8]
0
1
2
2
[1, 2, 3, 4, 5, 6, 8]
0
1
1
[1, 2, 3, 4, 5, 6, 8]
0
>>>

2.8元组

列表中的项目应该包括在方括号[]中,

你可以添加、删除或是搜索列表中的项目。

由于你可以增加或删除项目,所以列表是可变的数据类型,

即这种类型是可以被改变的。

元组和列表十分类似,但是元组是不可变的,共操作跟元组类似,只是不能被修改。

也就是说你不能修改元组。

元组通过圆括号()中用逗号分割的项目定义。

元组通常用在使语句或用户定义的函数能够安全地采用一组值的时候,

即被使用的元组的值不会改变。

>>> 1,2,3
(1, 2, 3)
>>> x=(1,2,3)
>>> x[1]
2
>>> x[0:1]
(1,)
>>> x[-1:]
(3,)
>>>
将列表转换成元组
>>> x=[1,2,3]
>>> tuple(x)
(1, 2, 3)
2.9 去除列表中的重复元素,先排序
>>> List=['b','b','d','b','c','a','a']
>>> if List:
List.sort()
last=List[-1]
for i in range(len(List)-2,-1,-1):
print i
List
print last
if last==List[i]:
del List[i]
else:
last=List[i]
5
['a', 'a', 'b', 'b', 'b', 'c', 'd']
d
4
['a', 'a', 'b', 'b', 'b', 'c', 'd']
c
3
['a', 'a', 'b', 'b', 'b', 'c', 'd']
b
2
['a', 'a', 'b', 'b', 'c', 'd']
b
1
['a', 'a', 'b', 'c', 'd']
b
0
['a', 'a', 'b', 'c', 'd']
a
>>> List
['a', 'b', 'c', 'd']

过程如上