Python數據類型在常見集合中的語法
Python數據類型在平時的應用中有不少的知識需要大家詳細的學習。下面就向大家介紹相關的技術問題。Python數據類型中的set和C#中的集合(collection)不是一個概念,這是翻譯的問題。
Python中的集合是指無序的、不重復的元素集,類似數學中的集合概念,可對其進行交、并、差、補等邏輯運算。
常見集合的語法為:
- s = set(['a', 'b', 'c'])
不過set在Python 3.0中發生了較大的變化,創建一個集合的語法變成了:s = {1,2,3},用花括弧的方法,與后邊要提到的dict類似。
如果在set中傳入重復元素,集合會自動將其合并。這個特性非常有用,比如去除列表里大量的重復元素,用set解決效率很高,示例如下:
- # -*- coding: utf-8 -*-
- a = [11,22,33,44,11,22,11,11,22,22,33,33,33]
- b = set(a)
- print b
- #輸出 set([33, 11, 44, 22])
另一個例子,找出兩個list里面相同的元素(集合求交,其它類推),代碼如下:
- # -*- coding: utf-8 -*-
- a = ["11","22","33"]
- b = ["11","33"]
- c = set(a)&set(b)
- print c
- #輸出 set(['11', '33'])
想想你如果自己實現這個算法會怎么寫?然后可以找兩個大一點的列表,比比和set實現的效率,你就會有體會了。以后在程序里多用set吧。
目前C#的Collections中好像還沒有Set,但是C++ STL里是有的,不知道C#為什么不實現這個有趣的東西。
字典(dict)
用過C#中Collections的人對Hashtable應該不會陌生,Python數據類型里的哈希表就是字典(dict)了。與set類似,字典是一種無序存儲結構,它包括關鍵字(key)和關鍵字對應的值(value)。#t#
C#程序員需要了解的就是,在Python中dict是一種內置的數據類型,定義方式為:dictionary = {key:value},當有多個鍵值對時,使用逗號進行分割。
字典里的關鍵字為不可變類型,如字符串、整數、只包含不可變對象的元組,列表等不能作為關鍵字。字典中一個鍵只能與一個值關聯,對于同一個鍵,后添加的值會覆蓋之前的值。
學過數據結構的人對字典的散列查找效率應該都有認識,所以我建議在可能的情況下盡量多用字典,其它的就不多寫了。關于Python數據類型中dict類型(以及list、tuple、set)提供的主要方法,可以參考專門介紹Python的各種書籍,大多會提供一個詳細的方法列表。