一·a=1,b=2,不用中間變量交換 a 和 b 的值
>>> a=1
>>> b=2
>>> a,b=b,a
>>> print a,b
2 1
二.
1 >>>dict() # 創(chuàng)建空字典
2 {}
3 >>> dict(a='a', b='b', t='t') # 傳入關(guān)鍵字
4 {'a': 'a', 'b': 'b', 't': 't'}
5 >>> dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函數(shù)方式來(lái)構(gòu)造字典
6 {'three': 3, 'two': 2, 'one': 1}
7 >>> dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代對(duì)象方式來(lái)構(gòu)造字典
8 {'three': 3, 'two': 2, 'one': 1}
9 >>>
三.
l = []
for i in xrange(10):
l.append({‘num’:i})
print l
與
l = []
a = {‘num’:0}
for i in xrange(10):
a[‘num’] = i
l.append(a)
print l
上方代碼的結(jié)果:
[{‘num’:0},{‘num’:1},{‘num’:2}琴昆,{‘num’:3},{‘num’:4}叫胁,{‘num’:5},{‘num’:6},{‘num’:7}萎战,{‘num’:8}瘫证,
{‘num’:9}]
下方代碼結(jié)果:(相當(dāng)于淺拷貝)
1. [{‘num’:9}揉阎,{‘num’:9},{‘num’:9}背捌,{‘num’:9}毙籽,{‘num’:9},{‘num’:9}毡庆,{‘num’:9}坑赡,{‘num’:9},{‘num’:9}么抗,
{‘num’:9}]
四.4G 內(nèi)存怎么讀取一個(gè) 5G 的數(shù)據(jù)
方法一:
可以通過(guò)生成器毅否,分多次讀取,每次讀取數(shù)量相對(duì)少的數(shù)據(jù)(比如 500MB)進(jìn)行處理蝇刀,處理結(jié)束后在讀取后面的 500MB 的數(shù)據(jù)螟加。
方法二:
可以通過(guò) linux 命令 split 切割成小文件,然后再對(duì)數(shù)據(jù)進(jìn)行處理吞琐,此方法效率比較高捆探。可以按照行數(shù)切割站粟,可以按照文件大小切割
五.
def print_directory_contents(sPath):
"""
這個(gè)函數(shù)接收文件夾的名稱作為輸入?yún)?shù)
返回該文件夾中文件的路徑
以及其包含文件夾中文件的路徑
"""
# 補(bǔ)充代碼
------------代碼如下--------------------
import os
for sChild in os.listdir(sPath):
sChildPath = os.path.join(sPath, sChild)
if os.path.isdir(sChildPath):
print_directory_contents(sChildPath)
else:
print(sChildPath)
六.常用的 Python 標(biāo)準(zhǔn)庫(kù)都有哪些徐许?
os 操作系統(tǒng),time 時(shí)間卒蘸,random 隨機(jī)雌隅,pymysql 連接數(shù)據(jù)庫(kù),threading 線程缸沃,multiprocessing進(jìn)程恰起,queue 隊(duì)列。
第三方庫(kù):
django 和 flask 也是第三方庫(kù)趾牧,requests检盼,virtualenv,selenium翘单,scrapy吨枉,xadmin(后臺(tái)管理)蹦渣,celery(定時(shí)任務(wù)),re貌亭,hashlib柬唯,md5。
常用的科學(xué)計(jì)算庫(kù)(如 Numpy圃庭,Scipy锄奢,Pandas)。
七. Python 里面如何生成隨機(jī)數(shù)
random.random():生成一個(gè) 0-1 之間的隨機(jī)浮點(diǎn)數(shù)剧腻;
random.uniform(a, b):生成[a,b]之間的浮點(diǎn)數(shù)拘央;
random.randint(a, b):生成[a,b]之間的整數(shù);
random.randrange(a, b, step):在指定的集合[a,b)中书在,以 step 為基數(shù)隨機(jī)取一個(gè)數(shù)灰伟;
random.choice(sequence):從特定序列中隨機(jī)取一個(gè)元素,這里的序列可以是字符串儒旬,列表栏账,元組等。
random.shuffle(alist):打亂排好序的列表
八.輸入某年某月某日义矛,判斷這一天是這一年的第幾天?
import datetime
def dayofyear():
year = input("請(qǐng)輸入年份:")
month = input("請(qǐng)輸入月份:")
day = input("請(qǐng)輸入天:")
date1=datetime.date(year=int(year),month=int(month),day=int(day))
date2 = datetime.date(year=int(year),month=1,day=1)
return (date1 - date2 + 1).days
九.map(),reduce(),zip(),filter(),lambda,
map():
>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']
reduce():
傳入一個(gè)list L 盟萨,返回所有元素乘積
>>> def prod(L):
... return reduce(lambda x,y:x*y,L)
zip():
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 打包為元組的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c) # 元素個(gè)數(shù)與最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped) # 與 zip 相反凉翻,*zipped 可理解為解壓,返回二維矩陣式
[(1, 2, 3), (4, 5, 6)]
filter():
和map()類似捻激,filter()也接收一個(gè)函數(shù)和一個(gè)序列制轰。和map()不同的是,filter()把傳入的函數(shù)依次作用于每個(gè)元素胞谭,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素
name.lower().capitalize():首字母大寫(xiě)其余小寫(xiě)
十.函數(shù)作為返回值垃杖、閉包、裝飾器
python2.7閉包問(wèn)題:
返回閉包時(shí)牢記一點(diǎn):返回函數(shù)不要引用任何循環(huán)變量丈屹,或者后續(xù)會(huì)發(fā)生變化的變量调俘。
計(jì)數(shù)器
def createCounter():
a = [0]
def counter():
a[0] += 1
return a[0]
return counter
c = createCounter()
裝飾器,三層裝飾器:
def metric(text):
def log(fn):
@functools.wraps(fn)
def wrapper(*args, **kw):
start =time.time()
s = fn(*args, **kw)
print text
end =time.time()
print end -start
return s
return wrapper
return log
十一.程序性能評(píng)估
import random
import cProfile
lIn = [random.random() for i in range(100000)]
cProfile.run('f1(lIn)')
cProfile.run('f2(lIn)')
cProfile.run('f3(lIn)')