溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Python中l(wèi)ist和set的區(qū)別是什么

發(fā)布時(shí)間:2020-09-10 10:29:42 來(lái)源:億速云 閱讀:324 作者:小新 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)Python中l(wèi)ist和set的區(qū)別是什么的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

list:

字面意思就是一個(gè)集合,在Python中List中的元素用中括號(hào)[]來(lái)表示,可以這樣定義一個(gè)List:

L = [12, 'China', 19.998]

可以看到并不要求元素的類(lèi)型都是一樣的。當(dāng)然也可以定義一個(gè)空的List:

L = []

Python中的List是有序的,所以要訪(fǎng)問(wèn)List的話(huà)顯然要通過(guò)序號(hào)來(lái)訪(fǎng)問(wèn),就像是數(shù)組的下標(biāo)一樣,一樣是下標(biāo)從0開(kāi)始:

>>> print L[0]12

千萬(wàn)不要越界,否則會(huì)報(bào)錯(cuò)

>>> print L[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

List也可以倒序訪(fǎng)問(wèn),通過(guò)“倒數(shù)第x個(gè)”這樣的下標(biāo)來(lái)表示序號(hào),比如-1這個(gè)下標(biāo)就表示倒數(shù)第一個(gè)元素:

>>> L = [12, 'China', 19.998]
>>> print L[-1]19.998

-4的話(huà)顯然就越界了,如下:

>>> print L[-4]

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    print L[-4]
IndexError: list index out of range
>>>

List通過(guò)內(nèi)置的append()方法來(lái)添加到尾部,通過(guò)insert()方法添加到指定位置(下標(biāo)從0開(kāi)始):

>>> L = [12, 'China', 19.998]
>>> L.append('Jack')
>>> print L
[12, 'China', 19.998, 'Jack']
>>> L.insert(1, 3.14)
>>> print L
[12, 3.14, 'China', 19.998, 'Jack']
>>>

注意python中有幾個(gè)方法與append類(lèi)似,但是效果完全不一樣,使用時(shí)需根據(jù)實(shí)際需求選用正確方法

1、append()  向列表尾部追加一個(gè)新元素,列表只占一個(gè)索引位,在原有列表上增加

2、extend() 向列表尾部追加一個(gè)列表,將列表中的每個(gè)元素都追加進(jìn)來(lái),在原有列表上增加

比如 list1=[1, 2, 3]   .list2=[4, 5, 6]

list1.append(list2) 的結(jié)果為[1, 2, 3, [4, 5, 6]]

list1.extend(list2) 的結(jié)果為[1, 2, 3, 4, 5, 6]

3、+  直接用+號(hào)看上去與用extend()一樣的效果,但是實(shí)際上是生成了一個(gè)新的列表存這兩個(gè)列表的和,只能用在兩個(gè)列表相加上

4、+= 效果與extend()一樣,向原列表追加一個(gè)新元素,在原有列表上增加

通過(guò)pop()刪除最后尾部元素,也可以指定一參數(shù)刪除指定位置:

>>> L.pop()
'Jack'
>>> print L
[12, 3.14, 'China', 19.998]
>>> L.pop(0)
>>> print L
[3.14, 'China', 19.998]

也可以通過(guò)下標(biāo)進(jìn)行復(fù)制替換

>>> L[1] = 'America'
>>> print L
[3.14, 'America', 19.998]

set:

set也是一組數(shù),無(wú)序,內(nèi)容又不能重復(fù),通過(guò)調(diào)用set()方法創(chuàng)建:

>>> s = set(['A', 'B', 'C'])

對(duì)于訪(fǎng)問(wèn)一個(gè)set的意義就僅僅在于查看某個(gè)元素是否在這個(gè)集合里面,注意大小寫(xiě)敏感:

>>> print 'A' in s
True
>>> print 'D' in s
False

也通過(guò)for來(lái)遍歷:

s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])

for x in s:
    print x[0],':',x[1]

>>>
Lisa : 85
Adam : 95
Bart : 59

通過(guò)add和remove來(lái)添加、刪除元素(保持不重復(fù)),添加元素時(shí),用set的add()方法

>>> s = set([1, 2, 3])
>>> s.add(4)
>>> print s
set([1, 2, 3, 4])

如果添加的元素已經(jīng)存在于set中,add()不會(huì)報(bào)錯(cuò),但是不會(huì)加進(jìn)去了:

>>> s = set([1, 2, 3])
>>> s.add(3)
>>> print s
set([1, 2, 3])

刪除set中的元素時(shí),用set的remove()方法:

>>> s = set([1, 2, 3, 4])
>>> s.remove(4)
>>> print s
set([1, 2, 3])

如果刪除的元素不存在set中,remove()會(huì)報(bào)錯(cuò):

>>> s = set([1, 2, 3])
>>> s.remove(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 4

所以如果我們要判斷一個(gè)元素是否在一些不同的條件內(nèi)符合,用set是最好的選擇,下面例子:

months = set(['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec',])
x1 = 'Feb'
x2 = 'Sun'

if x1 in months:
    print 'x1: ok'
else:
    print 'x1: error'

if x2 in months:
    print 'x2: ok'
else:
    print 'x2: error'

>>>
x1: ok
x2: error

另外,set的計(jì)算效率比list高。

感謝各位的閱讀!關(guān)于Python中l(wèi)ist和set的區(qū)別是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI