Python基本概念及零碎知識點

2022-08-12 14:39:17 字數 4100 閱讀 1293

1.python物件導向

2.python去除表中重複的元素

法1:>>>l1 = ['b','c','a','b','c','a','a']

>>> l2 = list(set(l1))

>>> print l2

['a', 'c', 'b']       注:set表示build an unordered collection of unique elements.

法2:l1 = ['b

','c

','d

','b

','c

','a

','a

']l2 = {}.fromkeys(l1).keys()

print

l2['a', 'c', 'b']  

缺點:改變了原有順序

改進:不改變順序

用list類的sort方法

l1 = ['

b','

c','

d','

b','

c','

a','a']

l2 = list(set(l1))

l2.sort(key=l1.index)

print l2

也可以這樣寫

l1 = ['

b','

c','

d','

b','

c','

a','a']

l2 = sorted(set(l1),key=l1.index)

print l2

也可以用遍歷

l1 = ['

b','

c','

d','

b','

c','

a','a']

l2 =

for i in l1:

if上面的**也可以這樣寫

l1 = ['

b','

c','

d','

b','

c','

a','

anot i in l2]

print l2

3.python有兩個內建的函式:locals和globals,他們提供基於dictionary的訪問區域性和全域性變數的方式。

區域性名字空間可以通過locals函式來訪問,全域性(模組級別)名字空間可以通過內建的golobals函式來訪問。

def foo(arg):

x=1print locals()

>>>foo(7)

>>>foo('bar')

函式foo()在他的區域性名字空間中有兩個變數:arg(它的值是被傳入函式的)和x(它是在函式裡定義的);locals返回乙個名字/值對的dictionary

回想一下 from module import

和 import module 之間的不同。使用 import module

,模組自身被匯入,但是它保持著自已的名字空間,這就是為什麼您需要使用模組名來訪問它的函式或屬性:

module.function 的原因。但是使用 from module import,實際上是從另乙個模組中將指定的函式和屬性匯入到您自己的名字空間,這就是為什麼您可以直接訪問它們卻不需要引用它們所**的模組。使

用 globals 函式,您會真切地看到這一切的發生。

globals:關於items的用法:

items()是directory中的乙個method,globals()函式返回乙個directory,故可以直接呼叫items()方法,items()返回的是乙個包含鍵/值對元組的列表

4.所有的python模組都是物件,並且有幾個有用的屬性,可以使用這些屬性方便的測試所編寫的模組:如下是乙個使用if __name__的技巧:

if __name__ == "__main__":

模組是物件,並且所有的模組都有乙個內建屬性__name__:乙個模組的__name__的值取決於你如何應用模組,如果import 模組,那麼

__name

__ 的值通常為模組的檔名,不帶路徑或者副檔名。但是您也可以像乙個標準的程式一樣直接執行模組,在這種情況下

__name

__ 的值將是乙個特別的預設值,

__main__。

如此,在你設計的模組內部加入這個if語句,當你直接執行模組,__name__的值就是__main__,所以測試套件執行,而當你匯入模組,即在其他程式中使用import匯入該模組,__name__的值就是其他別的東西了,所以測試套件就會被忽略,不執行。這樣就可以使得將新的模組整合到乙個大程式之前開發和除錯容易很多。

5.[python]三種方法刪除列表中重複的元素及效率分析!

方法一: 使用列表物件的sort()方法對列表進行排序,從最後乙個元素開始迴圈迭代列表,判斷相鄰的兩元素是否是否相等!

1 2 34

56 7 8

9 10

def methodone(

list

):  

list.sort()

lenlist =

len(

list

)lastitem =

list

[lenlist-1

]for i in

range

(lenlist-2

,-1,-1

):       

iflist

[i]== lastitem:            

list.remove

(list

[i])

else:            

lastitem =

list

[i]return

list

方法二: 定義乙個臨時列表,迴圈迭代出的元素如果不在臨時表中,則加入,最後返回臨時列表!12

3 4

5 6def methodtwo(

list

):  

templist =

for i in

list:      

ifnot i in templist:            

(i)return templist

方法三:1 2

lists=[20

,12,34

,12,24

,34,55

,27]print

list

(set

(lists)

)1、方法一相對方法二來說,有更多的額外操作如:排序、賦值。因為在python中,變數是不可變的,每迭代出乙個元素比較不相等後的操作是都是新建立乙個區域性變數並賦值而丟棄原變數,這需要消耗更多的記憶體!同時因為排序操作,破壞了相對位置。 2、方法二建立乙個臨時列表進行操作,而列表是可變的,每次追加元素都只是在原列表上增加乙個索引及值,因而相對方法一來說效率會更高! 3、第三個方法無疑是這三種方法中效率最好的(無論是**的簡潔還是執行效率):set()是內建的資料型別「集合型別」,它是無序的且值是唯一項的!所以set() 執行的結果就是轉為集合且直接去除了重複的元素,再list()則將集合又轉回列表型別。 但是,set()是會破壞了排列順序,如果要保留排序,list(set(lists)) 可改為 sorted(set(lists),key=lists.index)

6.列表,元組,集合,字典

列表(list),可以理解為"打了激素的陣列",跟陣列一樣可以根據下標(索引)來訪問元素,但要比陣列更加強大,還有自己特有的功能

元組,就是不可變的列表,一旦建立了元組,其內容就不可以再改變

集合,有自己獨特的"氣質":它裡面的值唯一且無序,正所謂"孤傲而隨性"

字典,由鍵和值兩兄弟組成的無序集合,可謂"無敵二人組"

>>> second = [40,50,60]

>>> second.extend([100,110,120])

>>> first [10, 20, 30, [70, 80, 90]]

>>> second [40, 50, 60, 100, 110, 120]

>>>

零碎知識C

c 中 dec,hex,oct,fixed,scientific,left,right,ws,setfill,setw,setprecision,eof,get,getline都是什麼意思 dec是十進位制 如cout這些是格式控制符 在使用時要加標頭檔案 include fixed是固定的意思 p...

JavaBean零碎知識

上面等價於下列操作 1.從scope session 中獲取id customer 屬性值,賦值給class com.stuipid.bean.customer 型別的id customer 變數 customer customer customer session.getattribute cus...

Python零碎筆記

魔法方法 在python中,有一些內建好的特定的方法,這些方法在進行特定的操作時會自動被呼叫,稱之為魔法方法。常見的魔法方法有 init 初始化函式,在建立例項物件為其賦值時使用,必須至少有乙個引數self。new 建構函式,建立並返回乙個例項物件。必須要有返回值,返回例項化出來的例項。class ...