首頁 >後端開發 >Python教學 >Python中list和set的區別

Python中list和set的區別

尚
原創
2019-07-05 11:00:306324瀏覽

Python中list和set的區別

list:

字面上就是一個集合,在Python中List中的元素用中括號[]來表示,可以這樣定義一個List:

L = [12, 'China', 19.998]

可以看到並不要求元素的型別都是一樣的。當然也可以定義一個空的List:

L = []

Python中的List是有序的,所以要訪問List的話顯然要透過序號來訪問,就像是數組的下標一樣,一樣是下標從0開始:

>>> print L[0]12

千萬不要越界,否則會報錯

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

List也可以倒序訪問,透過「倒數第x個」這樣的下標來表示序號,例如-1這個下標就表示倒數第一個元素:

>>> L = [12, &#39;China&#39;, 19.998]
>>> print L[-1]19.998

-4的話顯然就越界了,如下:

>>> 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透過內建的append()方法來加入尾部,透過insert ()方法加入指定位置(下標從0開始):

>>> L = [12, &#39;China&#39;, 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中有幾個方法與append類似,但是效果完全不一樣,使用時需根據實際需求選用正確方法

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

2、extend() 向列表尾部追加一個列表,將列表中的每個元素都追加進來,在原有清單上增加

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

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

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

3、   直接用號看上去與用extend()一樣的效果,但是實際上是產生了一個新的列表存這兩個列表的和,只能用在兩個列表相加上

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

透過pop()刪除最後尾部元素,也可以指定一參數刪除指定位置:

>>> L.pop()
&#39;Jack&#39;
>>> print L
[12, 3.14, &#39;China&#39;, 19.998]
>>> L.pop(0)
>>> print L
[3.14, &#39;China&#39;, 19.998]

也可以透過下標複製替換

>>> L[1] = &#39;America&#39;
>>> print L
[3.14, &#39;America&#39;, 19.998]

set:

# set也是一組數,無序,內容又不能重複,透過呼叫set( )方法創建:

>>> s = set([&#39;A&#39;, &#39;B&#39;, &#39;C&#39;])

對於存取一個set的意義就僅僅在於查看某個元素是否在這個集合裡面,注意大小寫敏感:

>>> print &#39;A&#39; in s
True
>>> print &#39;D&#39; in s
False

也透過for來遍歷:

s = set([(&#39;Adam&#39;, 95), (&#39;Lisa&#39;, 85), (&#39;Bart&#39;, 59)])

for x in s:
    print x[0],&#39;:&#39;,x[1]

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

透過add和remove來新增、刪除元素(保持不重複),當新增元素時,用set的add()方法

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

如果新增的元素已經存在於set中,add( )不會報錯,但是不會加進去了:

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

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

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

如果刪除的元素不存在set中, remove()會報錯:

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

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

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

if x1 in months:
    print &#39;x1: ok&#39;
else:
    print &#39;x1: error&#39;

if x2 in months:
    print &#39;x2: ok&#39;
else:
    print &#39;x2: error&#39;

>>>
x1: ok
x2: error

另外,set的計算效率比list高。

更多Python相關技術文章,請造訪Python教學欄位學習!

以上是Python中list和set的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn