1. 列表 (sequence)
python中列表其实在形式上很像是c语言中的数组。用符号[ ] 来表示,但是和C语言中的不同之处在于。列表中可以带很多的方法。
必须要明白一件事情 就是 python中 实际上是没有;这种东西的 ,基本上都是用格式来区分
这样做的好处是 ,代码优美 ,易读
/ 除号
% 取模
// 整除
** 乘方
十六进制 0x
八进制 0
关于序列
序列和元祖的区别,是元祖不可变,序列可变
序列是用[]
很奇怪 ,索引序列也是[],难道不会搞混掉么?
列表中的东西,用,隔开.
在没有引号的情况下,,可以直接饮用变量做拼接,就是序列中包含其他序列
#list
edward = ['Edwrd Gumby',42]
print edward[0]
#itrable list
john = ['John Smith',50]
database = [edward,john]
print database
索引
#index
greeting = 'Hello'
#seek it since the end
print greeting[-1]
#begin one is index 0
print greeting[0]
切片 [a:b], 从a到b,不包括b。
我想可以这样子理解,如果b是总长 ,那么 打印b出来就越界了,就不合理了
所以有个这样子的规定。
比如 green[0:1],就只会打印一个 H出来。
numbers = [1,2,3,4,5,6,7,8,9,10];
print numbers [7:10]
打印 8,9,10
print numbers[-3:-1]
打印 8,9
print numbers[-3:]
打印8,9,10
其实 到结尾 ,直接不填就是到结尾的意思
print numbers[0:10:1]
print numbers[0:10:2]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 3, 5, 7, 9]
如果在切片后面再填一位的话,就是切片步长。
切片可以是复数
print numbers[10:0:-1]
print numbers[10::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
特别强调 0 不是最后,在逆序的时候 , 空才是最后
那样就是从右至左来提取数列
序列相加
用+号就可以将两个序列相加了
numbers = [1,2,3]+[4,5,6]
print numbers
结果
[1, 2, 3, 4, 5, 6]
list 是支持* 表示 复制几分序列的意思
numbers = numbers*2
print numbers
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
检查一个值是否在序列中,可以用in
想知道 ,这个东西是个什么类型,那么就用type() 就可以了
permissions = 'rw'
ret = 'w' in permissions
print type(ret)
输出
<type 'bool'>
/-----------------------
lst = [1,2,3]
lst.append(4)
print lst
在链表尾追加数据
/----------------------------
print ['to','be','or','to','nor','be'].count('to')
输出2
查找某个元素出现的次数
/-------------------------------
扩展原有列表
a = [1,2,3]
b = [4,5,6]
a.extend(b)
print a
[1, 2, 3, 4, 5, 6]
/-----------------------------------
#index methed
kiights = ['We','are','the','knights','who','say','ni']
print kiights.index('who')
/------------------------------
#insert list
numbers = [1,2,3,4,5]
numbers.insert(3,'four')
print numbers
输出
4
[1, 2, 3, 'four', 4, 5]
/------------------------------------------
删除元素,pop操作,默认删除最后一个
numbers.pop()
print numbers
numbers.pop(0)
print numbers
/--------------------------------------------
x = ['to','be','or','nor','to','be']
x.remove('be')
print x
去除第一个be的匹配项
['to', 'or', 'nor', 'to', 'be']
/-------------------------------------------
反向 reverse
x.reverse()
print x
['be', 'to', 'nor', 'or', 'to']
/-----------------------------------------
排序问题 sort
x = [1,5,3,2,6,9,4]
#if need save the origin list , should do like this y = x[:]
#if do like this y = x. it dose not effct ,because they point the same place
y = x[:]
y.sort()
print x
print y
返回bool的时候 可以看如下示例
#check user name and PIN code
database = [
['albert','1234'],
['dilbert','4242'],
['smith','7542'],
['jons','9843']
]
username = raw_input('User name:')
pin = raw_input('PIN code:')
if [username,pin] in database:
print 'Access granted'
验证码
改变元素的值
#exchange the value in list
x = [1,1,1]
x[1] = 2
print x
/-----------------------------------
#delete elemate of list
names = ['Alice','Beth','Celil','Dee-Dee','Earl']
del names[2]
print names
删除元素
/-------------------------------------------
分片赋值
#assign value by pieaces
name = list('Perl')
name[2:] = list('ar')
print name
这里遇到了一个问题,字符串不能直接做分片操作,所以先要list一下
/------------------------------------------------
插入元素
numbers = [1,5]
numbers[1:1] = [2,3,4]
print numbers
[1, 2, 3, 4, 5]
/-----------------------------------------------
以此类推,删除分片也是一样的
numbers[1:4] = []
print numbers
[1, 5]
/----------------------------------------------