1,補充一點列表傳參需要註意的地方:列表傳參,是傳引用 執行結果: 2,我們可以在函數裡面對傳遞的列表參數,做一個拷貝,就不會是傳引用了 執行後 集合:沒有順序的概念,不能進行索引或者切片操作 1、創建集合. set():可變的 不可變的frozenset() 2,集合add與update操作 up ...
1,補充一點列表傳參需要註意的地方:列表傳參,是傳引用
#!/usr/bin/python #coding:utf-8 def show( l ): print '函數裡面' print id( l ) l[0] = 100 a = [ 10, 20, 30 ] print '調用前' print id( a ) print '調用後' show( a ) print a
執行結果:
ghostwu@ghostwu:~/python/tmp$ !p python list_arg.py 調用前 140000495519000 調用後 函數裡面 140000495519000 [100, 20, 30]
2,我們可以在函數裡面對傳遞的列表參數,做一個拷貝,就不會是傳引用了
#!/usr/bin/python #coding:utf-8 def show( l ): b = l[:] print '函數裡面' print id( b ) b[0] = 100 a = [ 10, 20, 30 ] print '調用前' print id( a ) print '調用後' show( a ) print a
執行後
ghostwu@ghostwu:~/python/tmp$ python list_arg2.py 調用前 140145018864920 調用後 函數裡面 140145018776680 [10, 20, 30]
集合:沒有順序的概念,不能進行索引或者切片操作
1、創建集合. set():可變的 不可變的frozenset()
2,集合add與update操作
>>> a = set() >>> type( a ) <type 'set'> >>> a.add( 10 ) >>> a.add( 20 ) >>> a set([10, 20]) >>> a.add( 'ghostwu' ) >>> a set([10, 20, 'ghostwu']) >>> a.update( 'ghostwu' ) >>> a set(['g', 'h', 10, 'o', 's', 20, 't', 'w', 'u', 'ghostwu']) >>>
update操作,把自身一個個添加到集合
remove操作,刪除一個不存在的元素會報錯
>>> a set(['g', 'h', 10, 'o', 's', 20, 't', 'w', 'u', 'ghostwu']) >>> a.remove( 'ghostwu' ) >>> a set(['g', 'h', 10, 'o', 's', 20, 't', 'w', 'u']) >>> a.remove( 20 ) >>> a set(['g', 'h', 10, 'o', 's', 't', 'w', 'u']) >>> a.remove( 'ab' ) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'ab' >>>
判斷成員是否存在in, not in
>>> a set(['g', 'h', 10, 'o', 's', 't', 'w', 'u']) >>> 'g' in a True >>> 'h' not in a False >>> 10 in a True >>>
集合:交集,並集,差集
交集:
>>> a = set( 'abcd' ) >>> b = set( 'bcdef' ) >>> a & b set(['c', 'b', 'd']) >>>
並集:
>>> a | b set(['a', 'c', 'b', 'e', 'd', 'f']) >>>
差集:
>>> a - b set(['a']) >>> b - a set(['e', 'f']) >>>
去重覆:
>>> l = [1,2,3] >>> l.append( 1 ) >>> l.append( 3 ) >>> l [1, 2, 3, 1, 3] >>> a = set( l ) >>> a set([1, 2, 3]) >>> type( a ) <type 'set'> >>> l [1, 2, 3, 1, 3] >>> l = list ( a ) >>> l [1, 2, 3] >>>
frozenset不能進行add,remove操作
>>> s = frozenset( 'abc' ) >>> s frozenset(['a', 'c', 'b']) >>> s.add( 'd' ) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'frozenset' object has no attribute 'add' >>> s.remove( 'a' ) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'frozenset' object has no attribute 'remove' >>>