1. 程式人生 > >python中對列表,元組,集合,字典的分析理解

python中對列表,元組,集合,字典的分析理解

1.列表(List)

     (1)列表一般是由 [ ] 表示,建立一個空列表,是任意物件的序列!

     (2)在python中的列表跟清單的道理是一樣的,特點就是:可重複,裡面的型別可不同!型別不同是也是列表跟陣列的最本質的區別!

    (3)列表的方法:

         list.append(x):把一個元素新增到連結串列的結尾,相當於a[len(a):] = [x] 。list.extend(L):將一個給定列表中的所有元素都新增到另一個列表中,相當於a[len(a):] = L 。list.insert(i,x):在指定位置插入一個元素。第一個引數是準備插入到其前面的那個元素的索引!

在列表中可動態的增加,刪除,更新!

其他的經常使用的一些方法: count():統計列表中指定元素的個數!     index():統計列表中指定值的位置 ! insert():將元素插入到列表指定的位置!      extend():與append()一樣,擴充套件列表(注意的是擴充套件的值新增到列表的末尾), 以及copy():賦值列表

sort():對列表進行排序! reverse(); 反轉列表中的元素

列表推導式為從序列中建立列表提供了一個簡單的方法。 普通的應用程式通過將一些操作應用於序列的每個成員並通過返回的元素建立列表,或者通過滿足特定條件的元素建立子序列。  例如, 假設我們建立一個 squares 列表, 可以像下面方式:  

>>> squares = [ ]

>>> for x in range(10):

...     squares.append(x**2)

...

>>> squares

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

一個古希臘演算法,篩選法,選取指定範圍內所有的素數!

def prime_eratosthenes(n):     prime_list = []     for i in range(2, n+1):         if i not in prime_list:             # print (i)             for j in range(i*i, n+1, i):                 prime_list.append(j)     print(prime_list)  

print(prime_eratosthenes(100))

2 .元組(Tuple):

         元組和列表在結構上沒有什麼區別,唯一的差異在於元組是隻讀的,不能修改。元組用“()”表示,將一組值打包到一個物件中,稱為元組。元組和列表的大部分操作相同。但是,列表是不固定的,可以隨時插入,刪除;而元組一旦確認就不能夠再更改。所以,系統為了列表的靈活性,就需要犧牲掉一些記憶體;而元組就更為緊湊。(注意,元組在定義過程中,字串必須用單引號‘擴起來。)

元組可以使用的方法:

    len(): 獲取的元組的長度,  del(): 刪除元組的元素,也同同樣可以使用index(): 索引

下面這個例子: sort(0 以及lambda的函式的使用

price = [('item1', '15.20'), ('item2', '15.10'), ('item3', '24.5')] print( sorted(price, key=lambda x: float(x[1]), reverse=False))

3.集合 (set):

與列表和元組不同,集合是無序的,也不能通過索引進行訪問。此外,集合中的元素不能重複。set將列表轉化(),一般可通過集合進行去重!基本功能包括關係測試和消除重複元素. 集合物件還支援union(聯合), intersection(交), difference(差)和sysmmetric difference(對稱差集)等數學運算!

集合也存在不可變形式,frozenset為固定集合

. set和dict類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在set中,沒有重複的key。

注意:想要建立空集合,你必須使用 set() 而不是 {} ,後者用於建立空字典

# 使用 set 函式建立集合

list1 = [6, 7, 7, 8, 8, 9]

set2 = set(list1)  

set2.add(10)  # 新增新元素

print (set2) 

### 集合有並集,交集,求差操作

### a & b 並集:intersection() 方法返回一個新集合,包含在兩個集合中同時出現的所有元素。

### a | b 交集:union() 方法返回一個新集合,包含在兩個 集合中出現的元素。

### a - b 差集:difference() 方法返回的新集合中,包含所有在 集合A出現但未在集合B中的元素。

### a ^ b 對稱差集:symmetric_difference() 方法返回一個新集合,包含所有隻在其中一個集合中出現的元素

set.discard()            discard(ele)將一個元素從集合中移除。如果元素不存在於集合中,它不會丟擲

4.字典(Dictionary):

字典定義了鍵和值之間一對一的關係,但它們是以無序的方式儲存的。 Python 中的 dictionary 像 Java 中的 Hashtable 類的例項。定義 Dictionary 使用一對大(花)括號” { } “  Dictionary 不只是用於儲存字串。Dictionary 的值可以是任意資料型別,包括字串、整數、物件,甚至其它的 dictionary。 在單個 dictionary 裡,dictionary 的值並不需要全都是同一資料型別,可以根據需要混用和匹配。

字典中幾個經常用的方法:

key() : 取出字典中所有的鍵      values():   取出字典中的所有值    clear();清空字典

pop(): 刪除指定的鍵值      copy():複製當前的字典          update(): 擴充套件字典           get(): 返回指定鍵值

popitem() :隨機返回兵器刪除字典中的一對鍵和值       items: 返回可遍歷的(鍵, 值)元組資料

formkeys()::從序列鍵和值設定為·value來建立一個新的字典!

# 編寫一個Python程式來建立和顯示所有字母組合,從字典中的不同鍵中選擇每個字母 # itertools模組包含建立有效迭代器的函式,可以用各種方式對資料進行迴圈操作, # 此模組中的所有函式返回的迭代器都可以與for迴圈語句以及其他包含迭代器(如生成器和生成器表示式)的函式聯合使用

# 建立一個迭代器, 生成專案的笛卡兒積的元組 import itertools d = {'1':['a', 'b'], '2':['c', 'd']} for combo in itertools.product(*[d[k] for k in sorted(d.keys())]):     print(''.join(combo))