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)

列表常用方法

序号方法
1list.append(obj)
在列表末尾添加新的对象
2list.count(obj)
统计某个元素在列表中出现的次数
3list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4list.index(obj)
从列表中找出某个值第一个匹配项的索引位置
5list.insert(index, obj)
将对象插入列表
6list.pop(obj=list[-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7list.remove(obj)
移除列表中某个值的第一个匹配项
8list.reverse()
反向列表中元素
9list.sort([func])
对原列表进行排序
反向排序使用:list.sort(reverse=True)
10list.clear()
清空列表
11list.copy()
复制列表
posted @ 2017-06-08 22:46  村口王铁匠  阅读(197)  评论(0编辑  收藏  举报