Python-基础知识学习之列表(list或者[])

列表:可以用 list 或者 [] 来表示,与元组不同,长度是可以变化的,每一项内容也可以修改。

lista = [2,3,5] #定义了一个列表

tup = ('foo', 'bar', 'baz')

listb = list(tup) #通过元组创建一个列表

print(listb)
#打印
['foo', 'bar', 'baz']

#修改列表第二项
listb[1] = 'peek'

print(listb)
#打印
['foo', 'peek', 'baz']

列表的另一个生成方式,通过迭代器或生成器转化:

g = range(10) 
print(g)
#打印
    range(0, 10)

list_a = list(g)
pring(list_a)
#打印
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

列表的方法有以下常用的:

append -- 添加数据

insert -- 插入数据

remove -- 移除数据

pop -- 移除并返回数据

lista = ['hello', 'world']
lista.append('day') #添加
print(lista)
#打印
    ['hello', 'world', 'day']

lista.insert(1, 'month') #在 1 的位置插入一个新数据
print(lista)
#打印
    ['hello', 'month', 'world', 'day']

lista.remove('world') #删除 ‘world’ 
print(lista)
#打印
    ['hello', 'month', 'day']

lista.append('hello') #这时里面有两个‘hello’
lista.remove('hello') #删除第一个‘hello’,留下最新加入的一个
print(lista)
#打印
    ['month', 'day', 'hello'] 

a = lista.pop(1) #移除第二个数据,并且返回
print(a, lista)
#打印
    'day', ['month', 'hello']

另外一个判断一个元素是否在列表中,用到的关键字是 in 和 not in

#接着上面的代码
bln = 'year' in lista
print(bln)
#打印
    False

bln = 'year' not in lista
print(bln)
#打印
    True

两个列表也可以通过使用‘+’号来拼接,但是这个代价会大一些,因为要临时创建新的列表并且复制数据,我们可以使用列表的自带函数,extend,它可以直接将后面的列表添加到调用extend函数的列表中去,这会减少临时数据的生成:

alist = [1, 2, 3]
blist = [4, 5, 6]

clist = alist + blist
print(clist)
#打印
    [1, 2, 3, 4, 5, 6]

alist.extend(blist)
print(alist)
#打印
    [1, 2, 3, 4, 5, 6]

列表还有一个重要功能,就是排序,sort函数,它是在列表内部进行排序,不会创建新的列表:

alist = [5, 4, 7, 8, 1]
alist.sort()
print(alist)
#打印
    [1, 4, 5, 7, 8]

blist = ['saw', 'samll', 'he', 'foxes', 'six']
blist.sort(key=len)
print(blist)
#打印
    ['he', 'saw', 'six', 'small', 'foxes']

bisect是一个模块,可以实现二分搜索和已排序列表的插值。使用bisect.bisect可以找到元素应该插入的位置,并且保持序列排序;bisect.insort可以将元素插入到相应位置:

import bisect #导入bisect模块

alist = [1, 2, 2, 2, 3, 4, 7]
print(bisect.bisect(alist, 2)) #表示 2 这个数,可以插入到列表的第五个位置
#打印
    4

print(bisect.bisect(alist, 5)) #表示 5 这个数,可以插入到列表的第七个位置
#打印
    6

bisect.insort(alist, 6)    #将数字6插入到列表的第七个位置
print(alist)
#打印
    [1, 2, 2, 2, 3, 4, 6, 7] 

这里的bisect并不会检查列表是否已经排序了,如果不排序就使用这个模块,可能会导致不正确的结果,所以应该在使用排序之后,再使用这个模块可以快速的将数据插入到列表中去。

列表的另一个强大的功能就是切片,用 start:stop 对传入中括号中进行取值:

alist = [7, 2, 3, 7, 5, 6, 0, 1]
blist = alist[1: 5]
print(blist)
#打印
    [2, 3, 7, 5]


alist[3:4] = [6, 3]
print(alist)
#打印
    [7, 2, 3, 6, 3, 5, 6, 0, 1]

切片的数量等于stop - start,取值包含start,不包含stop,另外start和stop是可以省略的,如果省略就表示从列表的起始位置到列表的结束位置:

#接上面代码
blist = alist[:5]
print(blist)
#打印
    [7, 2, 3, 6, 3]

blist = alist[3:]
print(blist)
#打印
    [6, 3, 5, 6, 0, 1]

#另外索引也可以为负数,表示从列表最后开始:
blist = alist[-4:]
print(blist)
#打印
    [5, 6, 0, 1]

blist = alist[-6: -2]
print(blist)
#打印
    [6, 3, 5, 6]

列表还可以按照间隔取值,叫步进值 step,在start:stop之后再加一个冒号表示:start:stop:step:

#接上面代码
blist = alist[::2]
print(blist)
#打印
    [7, 3, 3, 6, 1]

#有一个小技巧,我们如果想讲列表翻转,那么只要将step变为-1即可:
blist = alist[::-1]
print(blist)
#打印
    [1, 0, 6, 5, 3, 6, 3, 2, 7]

猜你喜欢

转载自blog.csdn.net/pz789as/article/details/93731015