Java 杂谈

跟我一起学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的去重都梳理了一下,个人觉得已经比较全面了!今天就到这儿吧!

上一篇下一篇

猜你喜欢

热点阅读