python数据类型之列表
python数据类型之列表
列表属于可变数据类型,在python程序中所有的数据都是围绕对象这个概念来构建的,对象包含一些基本的数据类型:数字,字符串,列表元组,字典等。
可变对象与不可变对象
实例被创建后,身份和类型是不可变的。
如果值是不可以被修改的,则是不可变对象。
如果值是可以被修改的,则是可变对象。
举例说明:
列表可变示例:id不变,type不变,value值可变。
>>> x = [1,2,3,4,5,6]
>>> id(x)
2192693759688
>>> type(x)
<class 'list'>
>>> x
[1, 2, 3, 4, 5, 6]
>>> x[0]=8
>>> id(x)
2192693759688
>>> type(x)
<class 'list'>
>>> x
[8, 2, 3, 4, 5, 6]
>>>
字符串不可变类型示例:
>>> m = 'hello world'
>>> id(m)
2192694105392
>>> type(x)
<class 'list'>
>>> m
'hello world'
>>> m[0]
'h'
>>> m[0]='ko'
Traceback (most recent call last):
File "<pyshell#103>", line 1, in <module>
m[0]='ko'
TypeError: 'str' object does not support item assignment
>>>
总结:
数字、字符串、元组是不可变类型,这些数据类型是可hash的。列表、字典是可变类型,这类数据类型是不可hash的。
>>> x={1:2,3:4}
>>> hash(x)
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
hash(x)
TypeError: unhashable type: 'dict'
>>> x=[1,2,3]
>>> hash(x)
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
hash(x)
TypeError: unhashable type: 'list'
>>> y='hello world'
>>> hash(y)
-3726519819292900381
列表创建
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。列表的数据项不需要具有相同的类型。当然列表内元素可以是列表,元组,字典等任意数据类型。
示例:
>>> list1 = ['haha','baidu',2017]
>>> lsit2 = [1,2,3,4,5]
访问列表的值
访问列表的值可以使用for循环来遍历,也可以像字符串那样通过索引来访问列表的值。
>>> list1 = ['haha','baidu',2017]
>>> [i for i in list1]
['haha', 'baidu', 2017]
>>> for i in list1:
print(i)
haha
baidu
2017
>>>
>>> list1 = ['haha','baidu',2017]
>>> list1[0]
'haha'
>>> list1[1:3]
['baidu', 2017]
>>>
因为常常用到enumrate(),这里介绍下它,enumerate()是python的一个内置函数。用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
语法:
enumerate(sequence,start)
sequence------一个序列,迭代器或者其他支持迭代对象。
start------下标起始位置,默认为从0开始。
示例:
>>> for k,v in enumerate(list2,1):
print(k,v)
1 one
2 two
3 three
更新列表
可以对列表的数据项进行修改或更新。
#!/usr/bin/env python
li = ['jack', 'tom', 2017, 2000]
print ("第三个元素为 : ", li[2])
list[2] = 2001
print ("更新后的第三个元素为 : ", li[2])
删除列表
可以使用 del 语句来删除列表的的元素,使用del删除元素不会有任何提示。
#!/usr/bin/env python
li = ['jack', 'tom', 2017, 2000]
print (li)
del li[2]
print ("删除第三个元素后结果: ", li)
列表常用方法
序号 | 方法 |
---|---|
1 | list.append(obj) 在列表末尾添加新的对象 |
2 | list.count(obj) 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj) 将对象插入列表 |
6 | list.pop(obj=list[-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) 移除列表中某个值的第一个匹配项 |
8 | list.reverse() 反向列表中元素 |
9 | list.sort([func]) 对原列表进行排序 反向排序使用:list.sort(reverse=True) |
10 | list.clear() 清空列表 |
11 | list.copy() 复制列表 |