>>>L=[1,2]
>>>M=L
>>>L+=[3,4]
>>>L,M
([1,2,3,4], [1,2,3,4])
python中沒有X++,X--的用法,由於python沒有對於不可變對象在原處修改的概念,好比數字
print X等價於
import sys
sys.stdout.write(str(X)+'\n')
也能夠把sys.stdout賦給標準輸出流之外的東西,如
import sys
sys.stdout=open('log.txt', a) 則每一個print會重定向到文件log.txt末尾
甚至能夠把sys.stdout賦值給一個對象,而由該對象的write方法處理文字
e.g class FileFaker:
def write(self,string):
#do something
import sys
sys.stdout=FileFaker()
print someObjects
或者 myobj=FileFaker()
print>>myobj, someObjects
布爾and和or運算會返回對象而不是值True或者False
or會停在第一個爲真的操做對象
>>>2 or 3, 3 or 2
(2,3)
>>>[ ] or 3
3
>>>[ ] or { }
{ }
and會停在第一個爲假的操做對象上
>>>2 and 3, 3 and 2
(3, 2)
>>>[ ] and { }
[ ]
if X:
A=Y
else:
A=Z
等價於 A =Y if X else Z
例如:
>>>A= ' t' if ' ' else 'f'
>>>A
'f'
還等價於A=[ Z, Y] [bool(X)] bool
A=((X and Y) or Z) 要保證Y爲真,那麼X爲真時返回Y,X爲假時返回Z
python不容許賦值語句出如今表達式中
C語言裏 while((x=next())!=NULL ) { }不可用
python中會從左至右掃描對象的迭代工具備for 循環,列表解析,in成員關係測試,map內置函數等
全部迭代工具內部都是每次迭代調用next,並捕捉StopIteration異常來肯定什麼時候離開。逐行讀取文本的最佳效果就是不去讀取,例如
for line in open('test.py'):
print line,
若是想在for循環中跳過一些元素能夠使用range,也能夠用分片來實現
S=‘abcde’
for i in range(0, len(S), 2) :
print S[i]
用分片實現 for x in S[: : 2] : print x,
對於大型文件,列表解析甚至比for要快
f=open('script.py')
lines=f.readlines()
lines=[lines.rstrip( ) for line in lines] #移除右側換行符
或者不用讀取 lines=[line.rstrip( ) for line in open('script.py')]
python中的迭代環境包括for循環, 列表解析,map內置函數,in成員關係測試表達式,內置函數sorted, sum, any,all, list, tuple, 字符串join方法, 序列賦值運算