Python的小技巧
2018-05-09 本文已影响12人
klory
- 循环和条件语句都要有
:
- 标准的条件结构:
if xxx...:
blabla
elif xxx...:
blabla...
else:
blabla...
-
python 有一些关键字和C不一样,比如说
and
,or
,not
,in
之类的 -
len
和del
不是list和dic的方法 -
join
是string的方法,因为返回的是一个string -
()
- 元组 -
[]
- 数组 -
{}
- 字典 -
print
可以这样用print(string, number)
-
**
是python中的幂操作符 -
string
不可变,list
,dict
可变 -
string
可以使用*
和+
-
list
可以使*
和+
-
这样也可以强势插入(尽管推荐使用insert和append函数):
alist = ['a', 'd', 'f']
alist[1:1] = ['b', 'c'] # [`a`, 'b', 'c', 'd', 'f']
print alist
alist[4:4] = ['e'] # [`a`, 'b', 'c', 'e', 'd', 'f']
print alist
- variable refers to object.
- 不可变的类型,比如string,被python优化为
相同的string指向同一地址
。但对于不可变的类型比如list和dic则指向不同的地址。
a = 'banana'
b = 'banana'
print(a==b) #True
print(a is b) #True
print("next part...\n")
aList = ['1', 1]
bList = ['1', 1]
print(aList == aList) #True
print(aList is bList) #False
bList[1] = 'haha'
print(aList) #['1', 1]
print('next part...\n')
- alias操作的意思是
起个别名
,这个对于mutable的数据类型尤其需要注意,python会默认将他们优化为 指向相同的内存地址。
alist = [4,2,8,6,5]
blist = alist
print(alist == blist) #True
print(alist is blist) #True
blist[3] = 999
print(alist) #[4, 2, 8, 999, 5],这里改的是blist,alist也跟着变了
# 如果要深拷贝数组:
blist = alist[:]
print(alist == blist) #True
print(alist is blist) #False
# 字典的话请使用内部函数copy
acopy = opposites.copy()
acopy['right'] = 'left' # does not change opposites
-
for可以遍历item也可以遍历index:
- 遍历item:
for item in alist:
; - 遍历index:
for i in range(len(list)):
- 遍历item:
-
最简单的文件操作方式:
filename= "yourfile.txt"
fileref = open(filename,"r")
for lin in fileref: # 比readlines要好,因为不需要一次读取整个文件
## operations on lin
fileref.close()
-
dic在赋值的时候,如果key不存在,会立刻创建一个key而不会有runtime error。
-
函数参数的默认值是在定义(define)的时候决定的,而不是在调用(invoke/call)的时候。比如说:
value = 10
def f(x = value):
print("x is:", x)
value = 1
f() # x is 10
- 函数参数的默认值如果是可变对象的话,这个对象会在每次调用的时候共享。比如说:
def f(a, L=[]):
L.append(a)
return L
print f(1)
print f(2)
print f(3)
print f(4, ["Hello"])
print f(5, ["Hello"])
- 单元素tuple的声明需要在最后加上逗号,否则会被看作基本类型
t = (5,)
print type(t)
x = (5)
print type(x)