Open eziceice opened 6 years ago
==运算符和Java中类似,通常用于比较两个值是否相同,而x is y则比较两个值是否为同一个,和equals()有些类似.使用==运算符来判定两个对象是否相等,使用is判定两者是否等同(同一个对象).
比较运算符可以用于比较字符串和序列,基本上来说就是一个一个来比较.
print('abc' < 'bcd') # True
print([1,2,3] < [1,2,5]) # True
- Python中的and和or运算符就是使用and和or,并不像Java使用&&和||.
**惰性求知(lazy evaluation)或者短路逻辑(short-circuit logic), 就是指只有在需要的时候才求值,如果第一个表达式不成立,则后面的表达式直接不考虑(略过).**
- Assert,可以在条件不成立是抛出exception使程序崩溃.
a = 50 assert a > 100, 'a must be larger than 50' #AssertionError: a must be larger than 50.
range()和xrange()的区别,range()一次生成全部的序列,而xrange()每次只生成一个数.因此,当需要生成的range非常大的时候,建议使用xrange().
并行迭代,程序可以同时迭代两个序列. zip()方法可以作用于任意多的序列,也可以处理不等长的序列,当最短的序列用完时就会停止.
names = ['test1','test2','test3','test4']
ages = [12,13,14,15]
for i in range(len(names)): print(ages[i], names[i])
for name, age in zip(names, ages): # 解包元组 也可以使用 for i in zip(names, ages): print(name, age)
- Python中的按索引迭代通常使用enumerate()
for index, item in enumerate(templist): if 'abc' in templist: templist[index] = 'opq'
- sorted()和reversed()方法,可以作用于任何序列或者可迭代对象,不是原地修改,而是返回翻转或者排序之后的序列.**sorted方法返回列表,reversed方法返回一个可迭代对象(需要配合list()或者循环方法使用)**
- for和while循环中都可以使用continue, break和**else**语句, else语句只在没有调用break的时候才执行.
for i in range(0,100): if i == 101: #若i等于101,执行else.若i=0-99中的某个数,调用break并且跳过else. print('break') break else: print('I am in else')
- 列表推导式(list comprehension),利用其他列表创建新列表.该方法比使用循环更加简洁.
print([x * x for x in range(0,10)])
print([x * x for x in range(0,10) if x % 3 == 0])
print([(x, y) for x in range(0,10) for y in range(5)])
- pass,如果不要程序做什么,可以使用pass,和Java中的Todo差不多.先空下今后再开发.
- del方法不仅会移除对象的引用,也会移除对象本身. (不需要过多考虑,python有垃圾回收的机制.)实际上删除的仅仅是名称而已,真正的对象删除靠的是GC的机制.Python的解释器会负责这些GC的处理.
- exec(),可以直接执行一个字符串,也可以动态地穿件代码字符串.
- eval(),求值函数.可以直接计算一个python表达式.
If & Loop & Other Statement
from math import sqrt as foobar print(foobar(4))
x, y, z = 1, 2, 3 print(x,y,z) # (1,2,3)
x, y = y, x print(x,y,z) # (2,1,3)
values = 1,2,3 x,y,z = values print(x,y,z) # (1,2,3)
x = y = somefunction()
等价于
y = somefunction() x = y
不一定等价于
x = somefunction() y = somefunction()
print(True + False + 42) // True = 1 False = 0
if x: dosomething() elif: dosomethingelse() else: doit()
x is y # x和y是同一个对象 x is not y # x和y不是同一个对象 x in y # x在容器y中 x not in y # x不在容器y中
同时, python中的比较运算符是可以连接使用的
if 0 < x < 100: dosomething()