list
list是一种有序的集合,可随时添加删除其中的元素。
>>> name=['Jack','Tom','Sunny']
>>> name
['Jack', 'Tom', 'Sunny']
>>> number=[00,01,02,03]
>>> number
[0, 1, 2, 3]
1. list中的元素索引从0开始,-1、-2、-3表示倒数第1、2、3个元素:
>>> name=['Jack','Tom','Sunny']
>>> name[0]
'Jack'
>>> name[-2]
'Tom'
>>> name[2]
'Sunny'
2. list内的元素的数据类型可以不同,也可以是另一个list:
>>> l=[1,2,3,'abc',[1,2,'xyz']]
>>> len(l)
5
可将l看做二维数组l[4][2]
>>> x=[1,2,'xyz']
>>> l=[1,2,3,'abc',x]
>>> x[2]
'xyz'
>>> l[4]
[1, 2, 'xyz']
>>> l[4][2]
'xyz'
3. 在list末尾添加元素,用append():
>>> name=['Jack','Tom','Sunny']
>>> name.append('Eva')
>>> name
['Jack', 'Tom', 'Sunny', 'Eva']
4. count()统计某个元素在列表中出现的次数:
name=['Jack','Tom','Sunny']
>>> print name.count('Jack')
1
5. extend()在列表末尾一次性追加另一个序列中的多个值:
>>> name=['Jack','Tom','Sunny']
>>> number=[00,01,02,03]
>>> name.extend(number)
>>> print name
['Jack', 'Tom', 'Sunny', 0, 1, 2, 3]
注意与append()的区别:
>>> name=['Jack','Tom','Sunny']
>>> number=[00,01,02,03]
>>> name.append(number)
>>> print name
['Jack', 'Tom', 'Sunny', [0, 1, 2, 3]]
6. 在list内将元素插入到指定位置,用insert():
>>> name=['Jack','Tom','Sunny']
>>> name.insert(2,'Eva')
>>> name
['Jack', 'Tom', 'Eva', 'Sunny']
注意逆序时插入位置:
>>> name=['Jack','Tom','Sunny']
>>> name.insert(-1,'Eva')
>>> name
['Jack', 'Tom', 'Eva', 'Sunny']
>>> name.insert(-2,'Bob')
>>> name
['Jack', 'Tom', 'Bob', 'Eva', 'Sunny']
7. 用len()函数可获得list元素个数,当list为空即没有一个元素时,长度为0:
>>> len(number)
4
8. 将list末尾元素删除,用pop():
>>> name=['Jack','Tom','Sunny']
>>> name.pop()
'Sunny'
>>> name
['Jack', 'Tom']
9. 将list内指定元素删除,用pop(i):
>>> name=['Jack','Tom','Sunny']
>>> name.pop(1)
'Tom'
>>> name
['Jack', 'Sunny']
>>> name=['Jack','Tom','Sunny']
>>> name.pop(-1)
'Sunny'
>>> name
['Jack', 'Tom']
10. list[::-1]将list取逆序
a = range(8)
b = ['a','b','c','d']
print a[::-1]
print b[::-1]
输出:
[7, 6, 5, 4, 3, 2, 1, 0]
['d', 'c', 'b', 'a']
7 tuple
与list相似,但初始化后不能修改。空的tuple可写成();
>>> name=('Jack','Tom','Sunny')
>>> name
('Jack', 'Tom', 'Sunny')
>>> name[0]
'Jack'
>>> name[-1]
'Sunny'
只有一个元素的tuple必须加一个逗号,以区分数学公式中的()
>>> x=(5)
>>> x
5
>>> x=(5,)
>>> x
(5,)
利用tuple可以直接交换变量的值:
>>> a=1.2
>>> b=3.4
>>> (a,b)=(b,a)
>>> print a,b
3.4 1.2
tuple[::-1]--tuple取逆序:
b = ('a','b','c','d')
print b[::-1]
输出:
('d', 'c', 'b', 'a')
namedtuple
示例:
from collections import namedtuple
stu = namedtuple('Student','name ID gender age')
print type(stu)
Ann = stu(name='Ann', ID=20170101, gender='female', age=73)
Jake = stu(name='Jake', ID=20170102, gender='male', age=84)
print 'Ann:',Ann
print 'Jake`s age:',Jake.age
输出:
<type 'type'>
Ann: Student(name='Ann', ID=20170101, gender='female', age=73)
Jake`s age: 84
’student’是这个namedtuple的名称,后面的’name ID gender’这个字符串中三个用空格隔开的字符是这个namedtuple的三个元素,分别名为name,ID和gender.
namedtuple使用时类似于Python中的类对象.
注意事项:
1.名称不能使用Python的关键字.
2.不能有重复的元素名称.
解决办法:
将namedtuple的重命名模式打开,这样如果遇到Python关键字或者有重复元素名时,自动进行重命名.
from collections import namedtuple
stu = namedtuple('Student','name ID gender age def', rename=True)
print stu._fields
输出:
('name', 'ID', 'gender', 'age', '_4')
知道重命名后的元素名后就可以正常使用了.
Ann = stu(name='Ann', ID=20170101, gender='female', age=73, _4=2)
print Ann
输出:
Student(name='Ann', ID=20170101, gender='female', age=73, _4=2)