核心编程笔记2.md

关于int(),floor(),round()的说明

函数int()直接截去小数部分。(返回值为整数)

函数floor()得到最接近原数但小于原数的整数。(返回值为浮点数)

函数round()得到最接近原数的整数。(返回值为浮点数)



>>> int(2.323)

2

>>> import math

>>> round(2.623)

3.0

>>> math.floor(2.623)

2.0

hex,oct,ord,unichr

hex(num) 将数字转换成十六进制数并以字符串形式返回

oct(num) 将数字转换成八进制数并以字符串形式返回

chr(num) 将ASCII值的数字转换成ASCII字符,范围只能是0 <= num <= 255。

ord(chr) 接受一个 ASCII 或 Unicode 字符(长度为1的字符串),返回相应的ASCII或Unicode 值。

unichr(num) 接受Unicode码值,返回 其对应的Unicode字符。所接受的码值范围依赖于 你的Python是构建于UCS‐2还是UCS‐4。


>>> hex(2323)

'0x913'

>>> hex(2.32)

Traceback (most recent call last):

File "", line 1, in

TypeError: hex() argument can't be converted to hex

>>> oct(2323)

'04423'

>>> ord('H')

72

>>> chr(72)

'H'

>>> unichr(72)

u'H'

核心模块: random

当你的程序需要随机数功能时,random 模块就能派上用场。该模块包含多个伪随机数发生 器,它们均以当前的时间戳为随机数种子。这样只要载入这个模块就能随时开始工作。下面列 出了该模块中最常用的函数:

两个整数参数,返回二者之间的随机整数

randrange() 它接受和 range()函数一样的参数, 随机返回 range([start,]stop[,step])结果的一项


>>> for i in range(10):

...     print random.randrange(1,100)

...

19

78

79

25

56

42

30

25

64

84

uniform() 几乎和 randint()一样,不过它返回的是二者之间的一个浮点数(不包括范围 上限)。


>>> random.uniform(1,200)

99.49992973419876

>>> random.uniform(1,200)

31.397479296429413

>>> random.uniform(1,200)

62.16024352925623

>>> random.uniform(1,200)

14.23821717081191

>>> random.uniform(1,200)

5.162732675350789

random()类似 uniform() 只不过下限恒等于 0.0,上限恒等于 1.0

choice()随机返回给定序列(关于序列,见第六章)的一个元素


>>> random.random()

0.44415727533326277

>>> random.choice([1,2,3,3,4,2])

3

>>> random.choice([1,2,3,3,4,2])

3

>>> random.choice([1,2,3,3,4,2])

3

>>> random.choice([1,2,3,3,4,2])

3

>>> random.choice([1,2,3,3,4,2])

3

>>> random.choice([1,2,3,3,4,2])

1

>>> random.choice([1,2,3,3,4,2])

2

序列操作符

seq[ind] seq[ind1:ind2] 获得下标为 ind 的元素

seq * expr seq1 + seq2 获得下标从ind1到ind2间的元素集合 序列重复 expr 次

obj in seq 判断 obj 元素是否包含在 seq 中

obj not in seq 判断 obj 元素是否不包含在 seq 中

s[::-1] # 可以视作"翻转"操作


>>> str='1234567'

>>> str[::-1]

'7654321'

>>> for i,j in enumerate(str):

...     print i,j

...

0 1

1 2

2 3

3 4

4 5

5 6

6 7

函数名 enumerate(iter)

zip([it0, it1,... itN])d 返回一个列表,其第一个元素是 it0,it1,...这些元素的第 一个元素组成的一个元组,第二个...,类推.

一般来说,从性能的的角度来考虑,把重复操作作为参数放到循环里面进行是非常低效的.

循环的一个注意事项


while i < len(myString):

print 'character %d is:', myString[i]

上面的循环操作把大把的时间都浪费到了重复计算字符串 myString 的长度上了.每次循环

迭代都要运行一次这个函数.如果把这个值做一次保存,我们就可以用更为高效的方式重写我们 的循环操作.


length = len(myString)

while i < length:

print 'character %d is:', myString[i] 这个方法同样适用于上面的例 6.1

for otherChar in myInput[1:]:

if otherChar not in alphas + nums:

for 循环包含了一个 if 语句,在这个 if 里面执行了合并两个字符串的操作。

被合并的这两个字符串从始至终就没变过,而每次都会重新进行一次计算.如果先把这两个字 符串存为一个新字符串,我们就可以直接引用这个字符串而不用进行重复计算了。


alphnums = alphas + nums

for otherChar in myInput[1:]:

if otherChar not in alphnums:

编译时字符串连接

在xpath里面用过,为了保证不超过80个字符

格式化字符

%c 转换成字符(ASCII 码值,或者长度为一的字符串)

%r 优先用 repr()函数进行字符串转换

%s 优先用 str()函数进行字符串转换

%d / %i 转成有符号八进制数

%u 转成无符号十进制数

%o 转成无符号八进制数

%x/%X (Unsigned)转成无符号十六进制数(x/X 代表转换后的十六进制字符的大小写)

%e/%E 转成科学计数法(e/E 控制输出 e/E)

%f/%F 转成浮点数(小数部分自然截断)

%% 输出%

字符串模板


>>> from string import Template

>>> s = Template('There are ${howmany} ${lang} Quotation Symbols')

>>> print s.substitute(lang='Python', howmany=3)

There are 3 Python Quotation Symbols

>>>  print s.substitute(lang='Python')

File "", line 1

print s.substitute(lang='Python')

^

IndentationError: unexpected indent

>>> print s.safe_substitute(lang='Python')

There are ${howmany} Python Quotation Symbols

输入


raw_input('enter somthing')

不到必须时不要在你的程序里面编解码 Unicod 字符.只在你要写入文件或数据库或者

网络时,才调用 encode()函数;相应地,只在你需要把数据读回来的时候才调用 decode() 函数.

list函数的一些注意

list.count(obj) 返回一个对象 obj 在列表中出现的次数

list.extend(seq) 把序列 seq 的内容添加到列表中

sort()方法,它默认的排序算法是归并排序(或者说"timsort")的衍生算法,时间复杂 度是 O(lg(n!)).

python 队列

import copy


>>> person = ['name', ['savings', 100.00]]

>>> hubby = person

>>> import copy

>>> wifey = copy.deepcopy(person)

>>> [id(x) for x in person, hubby, wifey]

[4533863560, 4533863560, 4533806792]

>>> hubby[0] = 'joe'

>>> wifey[0] = 'jane'

>>> hubby, wifey

(['joe', ['savings', 100.0]], ['jane', ['savings', 100.0]])

删除字典


del dict2['name'] # 删除键为“name”的条目

dict2.clear() # 删除 dict2 中所有的条目

del dict2 # 删除整个 dict2 字典

dict2.pop('name') # 删除并返回键为“name”的条目

字典的几个重要函数:

dict.clear()

dict.fromkey(seq,val=None)

创建并返回一个新字典,以 seq 中的元素做该字典的键,val 做该字 典中所有键对应的初始值(如果不提供此值,则默认为 None)

dict.get(key,default=None)

对字典 dict 中的键 key,返回它对应的值 value,如果字典中不存在此 键,则返回 default 的值(注意,参数 default 的默认值为 None)

dict.items()

返回一个包含字典中(键, 值)对元组的列表

dict.keys()

返回一个包含字典中键的列表

dict.iter()

方法 iteritems(), iterkeys(), itervalues()与它们对应的非迭代方法 一样,不同的是它们返回一个迭代子,而不是一个列表

dict.pop(key[, default])

和方法 get()相似,如果字典中 key 键存在,删除并返回 dict[key], 如果 key 键不存在,且没有给出 default 的值,引发 KeyError 异常

dict.setdefault(key,default=None)

和方法 set()相似,如果字典中不存在 key 键,由 dict[key]=default 为它赋值。

集合运算

等价/不等价被用于在相同或不同的集合之间做比较。两个集合相等是指,对每个集合而言,当 且仅当其中一个集合中的每个成员同时也是另一个集合中的成员。

联合(union)操作和集合的 OR(又称可兼析取(inclusive disjunction))

其实是等价的,两个集 合的联合是一个新集合,该集合中的每个元素都至少是其中一个集合的成员,即,属于两个集合其 中之一的成员。联合符号有一个等价的方法,union().

和其他的布尔集合操作相似,对称差分是集合的 XOR(又称”异或“ (exclusive disjunction)).

两个集合(s 和 t)的对称差分是指另外一个集合C,该集合中的元素,只能是属于集合s或者集合t的成员,不能同时属于两个集合。对称差分有一个等价的方法,

两个集合(s 和 t)的差补或相对补集是指一个集合 C,该集合中的元素,只属于集合 s,而不属 于集合 t。差符号有一个等价的方法,difference().

你可以把交集操作比做集合的 AND(或合取)操作。两个集合的交集是一个新集合,该集合中的每 个元素同时是两个集合中的成员,即,属于两个集合的成员。交集符号有一个等价的方法, intersection().


>>> s = set('cheeseshop')

>>> t = frozenset('bookshop')

>>> print s

set(['c', 'e', 'h', 'o', 'p', 's'])

>>> 'c' in t

False

>>> 'c' in s

True

>>> t

frozenset(['b', 'h', 'k', 'o', 'p', 's'])

>>> s==t

False

>>> s|t

set(['c', 'b', 'e', 'h', 'k', 'o', 'p', 's'])

>>> s&t

set(['h', 's', 'o', 'p'])

>>> s or t

set(['c', 'e', 'h', 'o', 'p', 's'])

>>> s and t

frozenset(['b', 'h', 'k', 'o', 'p', 's'])

>>> s xor t

File "", line 1

s xor t

^

SyntaxError: invalid syntax

>>> s -t

set(['c', 'e'])

>>> s XOR t

File "", line 1

s XOR t

^

SyntaxError: invalid syntax

>>> s ^ t

set(['b', 'e', 'k', 'c'])

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容