Python列表

Python列表是Python序列的一种,和字符串、元组一样,都属于序列类型。是元素按顺序排序,并可通过下标索引进入访问的数据类型。

关于字符串与元组的知识,以后再记录,这篇文章主要讲一下列表。

Python列表在创建后,可以通过下标索引在访问对应索引的元素值,感觉有点像数组,Python的数组是通过array扩展包来实现的,但是数组只允许存储相同类型的数据,而一个列表里面,可存储不同的数据类型,因此,列表是一种更加灵活的数据结构。

如果你有学过PHP,你会发现,Python的列表与PHP的索引数组非常相似,但是Python可以提供切片等强大的操作,这一点对PHP数组来说,可能要通过函数来实现。

但是,PHP数组除了索引数组,也支持字典存储,而Python要实现字典存储,则需要另外一个数组类型:字典数据类型

PHP数组=Python列表+Python字典;当然,这种理解并不一定准确!

1 创建列表

列表的创建非常简单,使用[]或list()便可创建一个列表。

1.1 使用[]创建,并初始化列表。

mylist = [1,2,3,4,5] #初始化
print mylist #结果:[1,2,3,4,5]

1.2 使用list方法创建列表

mylist = list("12345")
print mylist #结果:[1,2,3,4,5]
注意,list只允许传递字符串或元组。创建好列表之后,便可以通过索引访问,如
print mylist[2] #结果:3

2 列表赋值

在创建完列表或调用函数得到一个返回的列表之后,我们可能需要改变列表中某个元素的值,可以通过赋值来实现,python不只支持单个元素赋值,也支持通过索引范围,对多个元素进行赋值。

2.1 单元素赋值

mylist[1] = 100 #赋值给index=1的元素

2.2 多元素赋值

mylist[1:3] = 10,11,12 #赋值给index=1,2,3的元素

3 添加与删除操作

Python列表为可变类型,这意味着,我们不单可以改变列表中某个元素的值,也可以添加或删除Python中的元素

3.1 添加元素

3.1.1 append函数

使用列表内置append()函数在列表末尾添加元素

mylist.append(6)
mylist.append(7)
print mylist #结果:[1,2,3,4,5,6,7]
mylist.append(['a','b']) #结果:[1,2,3,4,5,6,7,['a','b']]
3.1.2 extend()函数
    mylist.extend([8,9,10])
    print mylist #结果[1,2,3,4,5,6,7,8,9,10]
注意mylist.extend([8,9,10])与mylist.append(['a','b'])的区别
extends()函数只接收序列数据类型,如果元组或字符,并把序列的每个元素加入到列表中
而append()函数,则允许接收任何对象,并将该对象作为列表的一个元素放入到列表的末尾。
3.1.3 insert()函数
mylist = [1,2,3,4,5]
mylist.insert(2,'a')
print mylist #结果:[1,2,'a',3,4,5]

3.2 删除元素

3.2.1 按索引删除元素
index = 1
x = mylist.pop(index)
print x #结果:
print mylist #结果:[1,3,4,5,6,7]
3.2.2 按值删除元素
mylist = ['a','b','b','a']
mylist.remove('a')
print mylist #结果,['b','b','a']

3.3 删除列表

del mylist
print mylist #报错:NameError: name 'mylist' is not defined

4 列表的长度与索引

列表长度

列表的长度可以使用内置函数len()获取
print len(mylist) #结果:5

列表的索引从0开始,因此索引的取值范围是

0<=index<=len-1

当索引超过取值范围时,会报list assignment index out of range的错误。

列表也支持负数索引来获取元素值,负数索引的取值范围

-len<=index<-1

序列索引最大值为序列长度-1

#获取第一个元素
print mylist[0]   #结果1
print mylist[len] #结果:1
#获取最后一个元素
print mylist[len-1] #结果:7
print mylist[-1] #结果:7

5 序列的基本操作

5.1 元素判断

有时候,我们需要判断某个对象是否存在于列表当中,可以使用in和not in来进行判断

x in list: x元素在list中,返回True,否则,返回False
x not in lit:x元素不在list中,返回True,否则,返回False
if 1 in mylist :{
    print "Yes"
}

if 100 not in mylist:{
    print "Yes"
}

5.2 连接

列表中实现了+的重载,对多个列表使用+运算时,可以起到连接的效果

list1+list2:list1连接list2,返回两个序列连接后的结果
    mylist1 = [1,2,3,4,5]
    mylist2 = [a,b,c,d,e]
    mytolist = mylist1+mylist2
    print mytolist #结果[1,2,3,4,5,6,a,b,c,d,e]

5.3 复制

与+运算类似,列表对 * 也实现了重载,使用*可以对列表按指次数进行复制操作,非常方便

list*time:将list复制time次,返回复制后的结果
print mylist * 2 #复制两次,结果[1,2,3,4,5,1,2,3,4,5]

5.4 切片

切片允许我们通过索引范围来读取列表中的数据,通过切片,我们可以访问、复制列表的数据片断。切片操作的格式为[:]或[::],具体如下。

[:]:获取列表的所有元素
[::]:获取列表的所有元素
[start_index:]:获取列表start_index索引到列表末尾的所有的元素
[:end_index]:获取列表end_index索引到列表末尾的所有的元素
[start_index:end_index]:切片
[start_index:end_index:step]:通过步长索引step扩展切片操作
mylist = [1,2,3,4,5,6,7,8,9,10]
print mylist[:] #获取全部,结果:[1,2,3,4,5,6,7,8,9,10]
print mylist[::] #获取全部,结果:[1,2,3,4,5,6,7,8,9,10]
print mylist[5:] #结果:[6,7,8,9,10]
print mylist[:5] #结果:[1,2,3,4,5]
print mylist[3:6] #结果:[4,5,6]
print mylist[::2]   #每隔1个元素取一个元素出来,结果:[1, 3, 5, 7, 9]

注意,切片操作从start_index开始获取元素,到end_inde结束,但获取的元素里面,不包含end_index索引对应的元素值,即获取元素的索引范围是start_index至end_index-1

5.5 排序

我们可以调用python内置函数sorted()对列表进行排序,也可以使用列表内置的sort()方法对列表进行排序,sorted与sort的区别在于,sorted对列表进行排序后,返回一个已经排序的列表而不影响原来的列表,而sort则通过直接改列表来实现排序。

mylist = [10,3,2,1,5,4,3,9]
mylist2 = sorted(mylist) #排序
print mylist2 #结果:[1, 2, 3, 3, 4, 5, 9, 10]
print mylist #不变,结果:[10,3,2,1,5,4,3,9]
mylist.sort() #排序
print mylist #改变,结果:[1, 2, 3, 3, 4, 5, 9, 10]

5.6 列表翻转

print mylist[::-1]  #翻转序列
mylist.reverse()    #翻转序列

6 遍历列表

for x in mylist:
    print x

for index in range(len(mylist))
    print mylist[index]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值