Python列表和元組

2020-12-05 Python之王

@Author :Runsen

Python列表和元組總結

什麼是列表和元組

列表是動態的,長度大小不固定,可以隨意地增加、刪減或者改變

而元組是靜態的,長度大小固定,無法增加刪減或者改變

定義列表和函數

```

l = [1, 2, 'hello', 'world'] # 列表中同時含有 int 和 string 類型的元素

l

[1, 2, 'hello', 'world']

tup = ('jason', 22) # 元組中同時含有 int 和 string 類型的元素

tup

('jason', 22)

```

對於列表來說,由於其是動態的,我們只需簡單地在列表末尾,加入

對於元組來說,實際上就是創建了一個新的元組,然後把原來兩個元組的值依次填充.

```

tup = (1, 2, 3, 4)

new_tup = tup + (5, ) # 創建新的元組 new_tup,並依次填充原元組的值

new _tup

(1, 2, 3, 4, 5)

l = [1, 2, 3, 4]

l.append(5) # 添加元素 5 到原列表的末尾

l

[1, 2, 3, 4, 5]

```

Python 中的列表和元組都支持負數索引,列表和元組都支持切片操作

```

l = [1, 2, 3, 4]

l[-1]

4

tup = (1, 2, 3, 4)

tup[-1]

4

list = [1, 2, 3, 4]

l[1:3] # 返回列表中索引從 1 到 2 的子列表

[2, 3]

tup = (1, 2, 3, 4)

tup[1:3] # 返回元組中索引從 1 到 2 的子元組

(2, 3)

```

列表和元組常見的內置函數

```

l = [3, 2, 3, 7, 8, 1]

l.count(3)

2

l.index(7)

3

l.reverse()

l

[1, 8, 7, 3, 2, 3]

l.sort()

l

[1, 2, 3, 3, 7, 8]

tup = (3, 2, 3, 7, 8, 1)

tup.count(3)

2

tup.index(7)

3

list(reversed(tup))

[1, 8, 7, 3, 2, 3]

sorted(tup)

[1, 2, 3, 3, 7, 8]

```

列表和元組存儲方式

```

l = []

l.__sizeof__() // 空列表的存儲空間為 40 字節

40

l.append(1)

l.__sizeof__()

72 // 加入了元素 1 之後,列表為其分配了可以存儲 4 個元素的空間 (72 - 40)/8 = 4

l.append(2)

l.__sizeof__()

72 // 由於之前分配了空間,所以加入元素 2,列表空間不變

l.append(3)

l.__sizeof__()

72 // 同上

l.append(4)

l.__sizeof__()

72 // 同上

l.append(5)

l.__sizeof__()

104 // 加入元素 5 之後,列表的空間不足,所以又額外分配了可以存儲 4 個元素的空間

```

元組的初始化速度,要比列表快 5 倍。

```

python3 -m timeit 'x=(1,2,3,4,5,6)'

20000000 loops, best of 5: 9.97 nsec per loop

python3 -m timeit 'x=[1,2,3,4,5,6]'

5000000 loops, best of 5: 50.1 nsec per loop

```

因此如果存儲的數據和數量不變,選擇元組

如果存儲的數據或數量是可變的,選擇列表

下面有兩種方法創建列表,哪個初始化更快,運行時間更快。

```

# 創建空列表

# option A

empty_list = list()

# option B

empty_list = []

```

測試結果,雖然直接創建元組初始化速度最快,但是由於要用list函數轉一道反而不如直接創建列表的速度快。

相關焦點

  • Python基礎教程(一) - 序列:字符串、列表和元組
    這一章我們主要研究這樣一些類型,他們的成員是有序排列的,並且可以通過下標偏移量訪問的,這類Python類型統稱為序列,包括字符串、列表和元組。對於字符串來說就是判斷一個字符是否屬於一個字符串;對於列表和元組,就代表一個對象是否屬於該對象。返回值一般來講是True/False,語法為:對象 [not] in 序列連結操作符(+):這個操作符允許我們把一個序列和另一個相同類型的序列做連接。
  • python入門第五課:數字列表的操作、列表切片與複製、元組的遍歷
    上面雖然輸出了1-10這些數字,但還不是列表的形式。range(1,11):squares.append(value**2) #把每個元素添加到列表的尾部print(squares) #列印最終的列表內容可以利用常用的統計函數min()、max()、sum()進行列表統計,見下面的代碼:
  • python數據類型總結——列表
    python用列表或元組來幫助我們。python列表一系列元素組成一個集合,可能通過索引,對每個元素進行訪問。這種數據類型統稱為序列。在python中,字符串就是一種序列。如下:列表刪除+ 號的拼接和 * 號的重複,對於列表來說同樣適用。
  • 11個python列表方法全面解析!
    來源:AI入門學習列表是python裡很重要的數據類型,其中的方法總共有11個,數量掌握這些方法,對數據的處理效率會大大提高,現在分享給大家。參數:object可以添加 列表,字典,元組,集合,字符串等。#append()函數的操作對象是原列表。
  • python字符串、列表內的方法使用
    python類型int:bit_lenth()bool:True Falsestr: str --->bool :bool(str): ''--->Falsestr例如:s = 'alexsb's1 = s[1]s2 = s[1:3]s3 = s[0:] s[
  • Python基礎學習之常用六大數據類型
    Python六大常用數據類型: int 整數 float 浮點數 str 字符串 list 列表 tuple 元組 dict 字典講解這些先說一下python中的變量與變量名。變量其實本質上是一個具有特殊格式的內存,變量名則是指向這個內存的別名。python中的變量不需要聲明,所有的變量必須賦值了才能使用。
  • Python基礎教程(一) - 快速入門
    從今天開始學習python,會將學習到的相關知識整理到這裡。今後的所有內容都基於Ubuntu系統中進行的,和其他語言一樣,讓我們先來"Hello World!"吧。Hello world!#!/usr/bin/python為Linux系統下Python解釋器的路徑,通常python解釋器的路徑安裝在/usr/local/bin或/usr/bin目錄下。
  • Python學習,這些高階函數和高階特性值得一學
    解決問題的思路有的時候會比較單一,其實Python有很多靈活的解法,比如python的幾個高階函數或者特性!推導式列表推導式,使用一句表達式構造一個新列表,可包含過濾、轉換等操作。語法:[exp for item in collection if codition]例子:1-1000內所有偶數組成的列表2種方法,大家自己對比字典推導式,使用一句表達式構造一個新列表,可包含過濾、轉換等操作。
  • 乾貨| 完美Python入門基礎知識點總結
    它支持字符,數字,字符串甚至可以包含列表(即嵌套)。列表用 [ ] 標識,是 python 最通用的複合數據類型。列表中值的切割也可以用到變量 [頭下標:尾下標] ,就可以截取相應的列表,從左到右索引默認 0 開始,從右到左索引默認 -1 開始,下標可以為空表示取到頭或尾。加號 + 是列表連接運算符,星號 * 是重複操作。
  • python中深淺拷貝
    大家在面試的時候經常會遇到一個這樣的問題:請問python中的深淺拷貝有什麼區別?下邊就簡單給大家總結一下這個問題:一、直接賦值拷貝,比如:a=b(1)數字和字符串在內存中是同一塊地址(2)字典、列表、元組等其他類型也是同一塊內存地址,不發生變化
  • Python數據類型之字典dict
    # 字典是一種可變容器類型,可存儲任意類型對象# 字典以鍵值對存儲數據,key-value形式,鍵值之間使用冒號:分隔,每個鍵值中間用逗號,分隔# 字典包含在大括號,花括號{}中# python中鍵必須是不可變的,但值可取任何數據類型# 元組可以作為 dict 的 key,但列表不能作為元組的 key,dict 要求
  • Python數據類型之列表list
    # 列表是python中最基本的數據結構,它是一個有序序列,序列中的每個元素都分配一個數字(位置,索引)# 1、我們可以使用 方括號,中括號[]來創建列表# 2、我們可以直接將序列放在list(seq)
  • Python之list列表數據類型講解
    前言在python中,list列表數據類型其實就是一個容器,可以放置大量元素的集合。同時,list列表也有很多特點和使用場景,本文主要講解list列表的函數方法。概念list列表是一個集合,一個容器,同Java語言中的數組是一樣的,唯一的不同之處在於,Java中的數組類型只能放置同一種數據類型,而Python中的列表可以放置不同的數據類型。
  • Python 拓展之推導式
    同時寫這個教程也算是對自己之前所學知識的一個鞏固和提高,喜歡的朋友們可以點個關注,有問題歡迎隨時和我交流。本文所有的代碼編寫均是Python3 版本。推導式是從一個或多個迭代器快速簡潔的創建數據結構的一種辦法,它可以將循環和條件判斷結合,從而可以避免語法冗長的代碼。
  • python基礎課程 第5章 奇妙的內建函數
    當然python語言中還有更多非計算密集型的函數和模塊是基於python語言本身實現的,在這裡我們只需要明白內建函數通常在計算密集型的情況下性能更好即可。關於計算密集型的概念在本文末尾會有一個簡單的解釋(坦白地講,其實現在還有不少 「程式設計師」 對這個概念都模糊不清)。
  • Python編程常見問題與解答
    答:是的,map對象、enumerate對象、zip對象、filter對象、reversed對象和生成器對象這些具有惰性求值特點的對象都不支持使用整數下標訪問其中的元素。可以把這類對象轉換為列表、元組來一次性獲取其中的元素,或者使用for循環逐個遍歷其中的元素。
  • python while循環、數據類型
    1.方法1、嵌套將一系列字典存儲在列表中,或將列表作為值存儲在字典中,這成為嵌套2、range(數字)返回一系列數字,設定循環多少次3、append()末尾添加4、items()以列表的形式返回可遍歷的(鍵值)元組數值。
  • Python 爬蟲面試題 170 道:2019 版
    31.如何實現 "1,2,3" 變成 ["1","2","3"]32.給定兩個 list,A 和 B,找出相同元素和不同元素33.[[1,2],[3,4],[5,6]]一行代碼展開該列表,得出[1,2,3,4,5,6]34.合併列表[1,5,7,9]和[2,2,6,8]35
  • python入門第四課:列表的排序、元素遍歷
    本教程使用的課本是《Python編程:從入門到實踐》,作者:[美] Eric Matthes本節介紹列表的操作,包括列表的排序、元素遍歷等操作。Sort()方法會永久改變列表的排列順序,還有個函數sorted()只臨時改變列表順序,大家也可以測試一下。有時候需要從列表最後一個元素倒著列印,可以用reverse()方法,會永久改變列表的順序。如果需要知道列表有多少個元素,可以用len()方法。
  • python日期和時間的操作方法匯總
    日期和時間可以說是一種獨特的數據類型,既不同於數字,也不同於字符串,而且有自己獨特的運算規則。在不同的程式語言中,都會將日期和時間與常規的數據類型獨立開來,單獨進行操作。