Python学习(十八)——list tuple namedtuple

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值