一·a=1,b=2,不用中间变量交换 a 和 b 的值
>>> a=1
>>> b=2
>>> a,b=b,a
>>> print a,b
2 1
二.
1 >>>dict() # 创建空字典
2 {}
3 >>> dict(a='a', b='b', t='t') # 传入关键字
4 {'a': 'a', 'b': 'b', 't': 't'}
5 >>> dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函数方式来构造字典
6 {'three': 3, 'two': 2, 'one': 1}
7 >>> dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代对象方式来构造字典
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
上方代码的结果:
[{‘num’:0},{‘num’:1},{‘num’:2},{‘num’:3},{‘num’:4},{‘num’:5},{‘num’:6},{‘num’:7},{‘num’:8},
{‘num’:9}]
下方代码结果:(相当于浅拷贝)
1. [{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},
{‘num’:9}]
四.4G 内存怎么读取一个 5G 的数据
方法一:
可以通过生成器,分多次读取,每次读取数量相对少的数据(比如 500MB)进行处理,处理结束后在读取后面的 500MB 的数据。
方法二:
可以通过 linux 命令 split 切割成小文件,然后再对数据进行处理,此方法效率比较高。可以按照行数切割,可以按照文件大小切割
五.
def print_directory_contents(sPath):
"""
这个函数接收文件夹的名称作为输入参数
返回该文件夹中文件的路径
以及其包含文件夹中文件的路径
"""
# 补充代码
------------代码如下--------------------
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 标准库都有哪些?
os 操作系统,time 时间,random 随机,pymysql 连接数据库,threading 线程,multiprocessing进程,queue 队列。
第三方库:
django 和 flask 也是第三方库,requests,virtualenv,selenium,scrapy,xadmin(后台管理),celery(定时任务),re,hashlib,md5。
常用的科学计算库(如 Numpy,Scipy,Pandas)。
七. Python 里面如何生成随机数
random.random():生成一个 0-1 之间的随机浮点数;
random.uniform(a, b):生成[a,b]之间的浮点数;
random.randint(a, b):生成[a,b]之间的整数;
random.randrange(a, b, step):在指定的集合[a,b)中,以 step 为基数随机取一个数;
random.choice(sequence):从特定序列中随机取一个元素,这里的序列可以是字符串,列表,元组等。
random.shuffle(alist):打乱排好序的列表
八.输入某年某月某日,判断这一天是这一年的第几天?
import datetime
def dayofyear():
year = input("请输入年份:")
month = input("请输入月份:")
day = input("请输入天:")
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():
传入一个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) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
filter():
和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素
name.lower().capitalize():首字母大写其余小写
十.函数作为返回值、闭包、装饰器
python2.7闭包问题:
返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
计数器
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
十一.程序性能评估
import random
import cProfile
lIn = [random.random() for i in range(100000)]
cProfile.run('f1(lIn)')
cProfile.run('f2(lIn)')
cProfile.run('f3(lIn)')
网友评论