python: 列表以及元组

python包含6种内建序列:列表,元组,字符串,Unicode字符串,buffer对象和xrange对象。


列表和元组的主要区别在于:列表可以修改,元组不能。

所有序列类型都可以进行某些特定的操作:索引,分片,加,乘,检查某个元素属于序列的成员,计算序列长度,找出最大元素和最小元素的内建函数。


索引;索引0指向第1个元素,-1指向最后一个元素。


字符串字面值能够直接索引,而不需要使用一个变量引用它们。如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作。

例:y=raw_input('Year: ')[3]

Year: 2017

>>>y

'7'


分片:第一个索引是要提取的第一个元素的编号,而最后的索引是分片之后剩余部分的第一个元素的编号。

左闭右开。

y=raw_input('Year: ')

Year: 2017

>>>y[-3:-1]

'01'


这种方法不能访问到最后一个元素,因为最后一个不能是0,是0的话返回空。

>>>y[-3:]

'017'

如果要复制整个序列,可以将两个索引都置空。


步长:步长为负数时表示分片从右到左提取元素.开始点大于结束点。开始点的元素包括在结果之中,而结束点的元素则不再分片之内。

n=[1,2,3,4,5,6,7,8,9,10]

>>>n[0:10:1] 或[::1]

[1,2,3,4,5,6,7,8,9,10]

>>>n[0:10:2]

[1,3,5,7,9]

>>>n[8:3:-1]

[9,8,7,6,5]


序列相加:两种相同类型的序列才能进行连接序列操作

>>> [1,2]+[3,4,5]
[1, 2, 3, 4, 5]
>>> 'hello, '+'world'
'hello, world'


序列相乘:

'PYTHONPYTHONPYTHON'
>>> [4]*5
[4, 4, 4, 4, 4]
>>> [3.4]*2
[3.4, 3.4]
>>> [3,4]*3
[3, 4, 3, 4, 3, 4]
>>> ['HI',9]*4
['HI', 9, 'HI', 9, 'HI', 9, 'HI', 9]


空列表可以用[]表示,但是如果想创建一个占用是个元素的空间却不包括任何有用内容的列表,可以;

s=[None]*10

None是一个内建值,确却含义是“这里什么都没有”


成员资格:

>>> p=input()
permission
>>> p
'permission'
>>> 'm'in p
True
>>> 'a'in p
False
>>> 'ion' in p
True
>>> 'iom'in p
False

例:

#检查用户名和密码
database=[
    ['fname','1231'],
    ['sname','1232'],
    ['tname','1233'],
    ['fname','1234']
    ]
username=input()
pin=input()
if [username,pin] in database : print('Access granted')


>>>len(n)

10

>>>max(n)

10

>>>min(n)

1


列表

list函数

因为字符串不能像列表一样被修改,所以可以根据字符串创建列表以修改

>>> list('list')
['l', 'i', 's', 't']

赋值:

>>> l[1]='I'
>>> l
['l', 'I', 's', 't']


删除:

>>> del l[1]
>>> l
['l', 's', 't']


分片赋值:

l[2:]=list('at')
>>> l
['l', 's', 'a', 't']
>>> l[1:]=list('abelling')
>>> l
['l', 'a', 'b', 'e', 'l', 'l', 'i', 'n', 'g']
>>> l[1:1]=list('aaa')       //起增加元素作用
>>> l
['l', 'a', 'a', 'a', 'a', 'b', 'e', 'l', 'l', 'i', 'n', 'g']
>>> l[1:4]=[]         //起删除作用
>>> l
['l', 'a', 'b', 'e', 'l', 'l', 'i', 'n', 'g']


列表方法:

1.append:在末尾追加新的对象

>>> price=[1,2,3]
>>> price.append(4)
>>> price
[1, 2, 3, 4]


2.count:统计某个元素在列表中出现的次数

>>> price.count(2)
1


3.extend:在末尾追加另一序列中的多个值

>>> b=[4,5,6]
>>> price.extend(b)
>>> price
[1, 2, 3, 4, 4, 5, 6]


4.index

>>> price.index(4)
3


5.insert:将对象插入列表

>>> price.insert(3,'a')
>>> price
[1, 2, 3, 'a', 4, 4, 5, 6]

6.pop:删除一个元素(默认最后一个值),并返回该值

>>> price.pop()
6

>>> price.pop(4)
4
>>> price
[1, 2, 3, 'a', 4, 5]
 

7.remove:移出某个值的匹配项

>>> price.remove('a')
>>> price
[1, 2, 3, 4, 5]


8.reverse:将元素反向存放

>>> price.reverse()
>>> price
[5, 4, 3, 2, 1]


9.sort:在原位置队列表进行排序并返回空值

>>> price.sort()
>>> price
[1, 2, 3, 4, 5]


若想保留原来的列表,不能简单的

>>> x=[5,6,2,4]
>>> y=x
>>> y.sort()
>>> x
[2, 4, 5, 6]

这样会改变x,此时y和x指向同一列表


可以:

1.使用sorted

>>> x=[5,6,2,4]
>>> y=x.sorted()

>>> y
[2, 4, 5, 6]
>>> x
[5, 6, 2, 4]

2.将x逐一赋值给y

>>> y=x[:]
>>> y.sort()
>>> x
[5, 6, 2, 4]
>>> y
[2, 4, 5, 6]


元组:不可变序列(字符串也是如此)

元组是通过圆括号括起来的,一个值的元组也需要加一个逗号

>>> 1,2,3
(1, 2, 3)

>>> 42
42
>>> 42,
(42,)
>>> ()
()
>>> 3*(10+2)
36
>>> 3*(10+2,)
(12, 12, 12)

tuple:将序列转换成元组

>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple((1,2,3))
(1, 2, 3)
>>> tuple('abc')
('a', 'b', 'c')

元组操作:创建,访问,分片


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值