tags: Python
Learning Note
整数除法:1/2=0(可使用`from __future__ import division`或者附加`-Qnew`执行)
0xAF(175)
,010(8)
)input("")
等) `from 模块 import 函数`
可以用变量引用函数(`foo=math.sqrt`)
cmath.sqrt
支持复数) 转移在前面加上\。
str
可以转换值为字符串。repr
,以Python表达式形式表示值。input
会假设用户输入的是合法的Python表达式(与repr相反)。row_input
会把所有的输入当初原始数据(row_data)。 如: 对于`name = input("name:")`,只能输入"hcbbt",而直接hcbbt不带双引号会报错。
这里比较麻烦的是处理字符串里面的引号,里面的引号前面加上\后输出的原始字符串也会有\的,这里可以用单双括号混合用来绕开这个问题。另外注意原始串最后面不能是\,否则识别不了。
Unicode字符串:在字符串前使用u前缀。 列表和元组的主要区别在于,列表可以修改,元组则不能。
一般来说,在几乎所有的情况下列表都可以替代元组。(例外情况:使用元组作为字典的键。)
字符串就是一个由字符组成的序列。
字符串字面值能够直接使用索引,如'Hello'[1] = 'e'
索引可以为负数。
[]
,空值:None
。 初始化:[None] * 10
len(nums)
max(nums)
min(nums)
list(str)
''.join(somelist)
del names[2]
。 如:name = list('Perl') name[1:]=list('ython'),此时''.join(name)='Python'
也可以通过分片删除元素:name[1:2] = []
,'y'就被删掉了。append
:在列表后追加新对象。count
:统计某个元素在列表中出现的次数。extend
:可以在列表的末尾一次性追加另一个序列中的多个值。(修改了前面的列表)(a.append(b)
等价于分片赋值a[len(a):] = b
)index
:从列表中找出某个值第一个匹配项的索引位置。(不存在会引发异常)insert
:用于将对象插入到列表中。a.insert(3,'test')
在下标为3的位置插入'test'。pop
:会移除列表中的一个元素(默认是最后一个),并且返回该元素的值。remove
:移除列表中某个值的第一个匹配项。(第一次出现的值)reverse
:将列表中的元素反向存放。(不会返回列表,而是返回迭代器。可使用list(reserved(x))
返回列表)关于
sort
高级排序**:
内建函数cmp(x,y)
在x < y时返回负数,在x > y时返回正数,如果x = y则返回0。
sort默认用的是cmp
,我们可以直接写比较函数并调用。如a.sort(cmp2)
sort方法有另外两个可选的参数--键函数key
(如key=len)和布尔值reverse
(True即反向,False正向,默认False)。
3.2 字符串格式化:精简版
用包含转换说明符的字符串+%+元组或字典实现。如:"Hello, %s. %s enough for ya?" % ('world', 'Hot')
。(如果用列表会被当成一个值)
如果要在格式化字符串里包含百分号,那么必须使用%%。
模版字符串,需要from string import Template。关键字为$,Template,方法为substitute。(同样如果要输出$就要使用$$了。)(还可以使用字典的映射键设置关键字)
如:Template('Hello, $x. ${y}t enough for ya?').substitute(x='world', y='Ho')
%*s
,后面元组里面加上数值表示*位置的数)%a10s
,a为0表示0填充,-表示左对齐,+为标出正负(+0))string.digits/ letters/ ascii_letters/ lowercase/ uppercase/ printable/ punctuation
'+'.join(['1','2','3'])
)(队列中添加元素(注意:需要添加的队列元素都必须是字符串))title
方法和string.capwords
:单词首字母大写)a='Hello,world' t=a.maketrans('l','a') a.translate(t))
字典是python中唯一内建的映射类型。字典中的值并没有特殊的顺序。
dict是一个类型。
通过其他字典或(键,值)序列来建立字典: items = [('A','1111'),('B','2222')] pb = dict(items)
或者直接用关键字参数创建: pb = dict(A='1111', B='2222')
len(d)
:长度d[k]
:取键k的值d[k]=b
:赋值(关联)del d[k]
:删除项k in d
:检查键 键类型是不可变类型
"AAA's phone number is %(AAA)s." % phonebook
clear
:清除字典中所有的项目。copy
:返回一个具有相同键值对的新字典。 这是浅复制,值是相同的,不是副本复制!
用`deepcopy`可以实现深复制(`from copy import deepcopy`)
fromkeys
:使用给定的键建立新的字典,每个键默认对应的值为None(可以自己提供默认值)。 get
:更宽松的访问字典项的方法,字典中不存在的项会返回None(可以自己提供默认值)。has_key
:检查字典中是否含有给出的键。(3.0没有此函数)items
:将所有的字典项以列表方式返回,返回时没有特殊的顺序。(iteritems
返回迭代器)keys
:将键以列表方式返回,iterkeys同iteritems。pop
:弹出对应值并删去该项。popitem
:随机弹出项。(因为没有顺序)setdefault
:和get
差不多,如果键不存在会更新字典。update
:利用一个字典项更新另外一个字典。values
:以列表的形式返回字典中的值。(可重复)(itervalues
返回迭代器)import 模块
:把模块中的函数导入当前的语义表(as 别名)from 模块 import 函数1,函数2...
:直接导入命名from 模块 import *
:导入所有除了以下划线_开头的命名。x,y,z=1,2,3
分别复制,x,y=y,x
交换值,x,y,z=(1,2,3)
序列赋值)(3.0可以用星号运算符收集多余元素)0<age<100
连接比较in, not in
成员资格运算符is, not is
同一性运算符(是否同一对象)and
优先级大于or
assert 0<age<100
) for x in lst:
print x
可以用range(a,b)
实现[a,b)的整数序列。 range直接创建序列(2.x下),xrange()一次只创建一个数,适合大序列。(可加步长)
for key(or value) in dictionary: pass
for x in zip(a,b):...
,如果len(a)<len(b),len(zip(a,b))==len(a))enumerate()
:枚举容器中的序列和值,返回为迭代器。reversed()
返回迭代器,sorted()
返回列表。break
、continue
)break
后执行) [表达式 for 变量 in 列表 if 条件](for和if可以多个)
pass
)g = {} exec "a=1" in g
等效于exec("a=1", g)
)(可以指定多个作用域)eval
:用于“求值“,会返回值。本文已用马克飞象重新排版,然后再从evernote复制处理的。
衷心感谢马克飞象和evernote的支持。