跟我一起学Python数据结构之list
2018-12-27 本文已影响2人
jerrik
list是python中非常重要的数据结构,使用非常的灵活.可以方便的对list进行增删、查找、遍历、排序、插入等操作。最重要的是它的切片功能,可以快速截取子列表。一个list搞定一个基于数组的list和基于链表的list,功能比较强悍。有必要好好掌握下!
一、list常用方法
#- 定义一个list
list = []
#- 初始化元素
list = [1,2,3,4,5,6,7,8,9]
print "list-old: %s" % list
#- 计算list元素的个数
nLen = len(list)
print "list-len: %d" % nLen
#- 往list添加一个元素
list.append(4) #随便是什么类型
print "list-append(4): %s" % list
#- 在list最前插入一个元素
iList = list.insert(0,7)
print "list-insert(0,7): %s" % iList
#- 计算某个元素在list中出现的次数
listCnt = list.count(2)
print "list-count(2): %d" % listCnt
#- 弹出第一个元素
p1 = list.pop(0)
print "list-pop-0: %s" % p1
#- 弹出最后一个元素
p2 = list.pop(-1)
print "list-pop-(-1): %s" % p2
#- 移除某个元素
list.remove(2) #注意,如果出现多个,只能移除第一个
print "list-remove(2): %s" % list
#- 反转list
list.reverse()
print "list-reverse: %s" % list
结果:
list-old: [1, 2, 3, 4, 5, 6, 7, 8, 9]
list-len: 9
list-append(4): [1, 2, 3, 4, 5, 6, 7, 8, 9, 4]
list-insert(0,7): None
list-count(2): 1
list-pop-0: 7
list-pop-(-1): 4
list-remove(2): [1, 3, 4, 5, 6, 7, 8, 9]
list-reverse: [9, 8, 7, 6, 5, 4, 3, 1]
二、list切片功能
list = [1,2,3,4,5,6,7,8,9]
print "full list: %s" % list
#- 取出list前两个元素
print "list[0:2]: %s" % list[0:2]
#- 取出第一个到倒数第一个之间的元素(不包括倒数第一个)
print "list[0:-1]: %s" % list[0:-1]
#- 取出所有元素(也可以直接用list[:]表示)
print "list[0:]: %s" % list[0:]
#- 取出前三个元素
print "list[:3]: %s" % list[:3]
#- 前10个元素,每隔两个元素就取一个
print "list[:10:2]: %s" % list[:10:2]
#- 所有元素中,每隔3个元素就取一个
print "list[::3]: %s" % list[::3]
查看结果:
full list: [1, 2, 3, 4, 5, 6, 7, 8, 9]
list[0:2]: [1, 2]
list[0:-1]: [1, 2, 3, 4, 5, 6, 7, 8]
list[0:]: [1, 2, 3, 4, 5, 6, 7, 8, 9]
list[:3]: [1, 2, 3]
list[:10:2]: [1, 3, 5, 7, 9]
list[::3]: [1, 4, 7]
三、迭代list以及排序
3.1 迭代list
list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print "full list: %s" % list
# 方法1
print '遍历列表方法1:'
for i in list:
print ("序号:%s 值:%s" % (list.index(i) + 1, i))
print '\n遍历列表方法2:'
# 方法2
for i in range(len(list)):
print ("序号:%s 值:%s" % (i + 1, list[i]))
# 方法3
print '\n遍历列表方法3:'
for i, val in enumerate(list):
print ("序号:%s 值:%s" % (i + 1, val))
# 方法3
print '\n遍历列表方法3 (设置遍历开始初始位置,只改变了起始序号):'
for i, val in enumerate(list, 2):
print ("序号:%s 值:%s" % (i + 1, val))
3.2 list排序
list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print "full list: %s" % list
#默认升序排列
list.sort()
print "默认排序: %s" % list
#list降序排列
list.sort(reverse=True)
print "reverse排序: %s" % list
#字符串按ASCII排列
list2 = ['tencent','Alibaba','google','IBM','Oracle']
list2.sort()
print "字符串排序: %s" % list2
# 定义一个函数
def sortByLength(content):
return len(str(content))
#自定义排序
list2.sort(key=sortByLength,reverse=True)
print "按字符串长度倒序排列: %s" % list2
查看结果:
full list: [1, 2, 3, 4, 5, 6, 7, 8, 9]
默认排序: [1, 2, 3, 4, 5, 6, 7, 8, 9]
reverse排序: [9, 8, 7, 6, 5, 4, 3, 2, 1]
字符串排序: ['Alibaba', 'IBM', 'Oracle', 'google', 'tencent']
按字符串长度自定义排序: ['Alibaba', 'tencent', 'Oracle', 'google', 'IBM']
四、其它功能
#判断元素是否存在list
list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print "full list: %s" % list
def hasElement(ele,arr = []):
if ele in arr:
return True
else:
return False
#True
print hasElement(2,list)
#False
print hasElement(10,list)
#添加另外的list
list2 = range(6,15)
list.extend(list2)
print "list.extend: %s" %list
#利用set完成list的去重
nList = set(list)
print "list去重: %s" % nList
//output
full list: [1, 2, 3, 4, 5, 6, 7, 8, 9]
True
False
list.extend: [1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 7, 8, 9, 10, 11, 12, 13, 14]
list去重: set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
五、总结
今天大概把list的一些基本用法,包括切片、迭代、排序,添加list,以及list的去重都梳理了一下,个人觉得已经比较全面了!今天就到这儿吧!