python小记(2)
三元操作,是条件语句中比较简练的一种赋值方式,它的模样是这样的:
>>> name = "qiwsir" if "laoqi" else "github"
先思考一个问题,if "laoqi"
,这里似乎没有条件表达式,Python怎么判断?
的确没有条件表达式,事实上,它就等同于if bool("laoqi")
。
>>> name
'qiwsir'
>>> name = 'qiwsir' if "" else "python"
而这里的if ""
就相当于if bool("")
(注意写法上,两个引号之间没有空格)。还要多说一句,这里列举的方式,纯粹是为了理解三元操作符,不具有实战价值。
>>> name
'python'
>>> name = "qiwsir" if "github" else ""
>>> name
'qiwsir'
总结一下:A = Y if X else Z
什么意思,结合前面的例子,可以看出:
- 如果X为真,那么就执行A=Y
- 如果X为假,就执行A=Z
如此例
>>> x = 2
>>> y = 8
>>> a = "python" if x > y else "qiwsir"
>>> a
'qiwsir'
>>> b = "python" if x < y else "qiwsir"
>>> b
'python'
if
所引起的条件语句使用非常普遍,当然也比较简单。
for 循环
>>> help(zip)
Help on class zip in module builtins:
class zip(object)
| zip(iter1 [,iter2 [...]]) --> zip object
|
| Return a zip object whose .__next__() method returns a tuple where
| the i-th element comes from the i-th iterable argument. The .__next__()
| method continues until the shortest iterable in the argument sequence
| is exhausted and then it raises StopIteration.
>>> a ='qiwsir'
>>> c = [1, 2, 3]
>>> zip(c) #这是Python 2的结果,如果是Python 3,请仿照前面的方式显示查看
[(1,), (2,), (3,)]
>>> zip(a)
[('q',), ('i',), ('w',), ('s',), ('i',), ('r',)]
>>> dict(zip(myinfor.values(), myinfor.keys())) {'python': 'lang', 'qiwsir.github.io': 'site', 'qiwsir': 'name'}
enumerate
enumerate()
也是内建函数。
>>> for (i, day) in enumerate(week): ... print day+' is '+str(i) #Python 3: print(day+' is '+str(i)) ... monday is 0 sunday is 1 friday is 2
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
对于这样一个列表:
>>> mylist = ["qiwsir",703,"python"] >>> enumerate(mylist) <enumerate object at 0xb74a63c4> >>> list(enumerate(mylist)) [(0, 'qiwsir'), (1, 703), (2, 'python')]
列表解析
先看下面的例子,这个例子是想得到1到9的每个整数的平方,并且将结果放在列表中,打印出来。
>>> power2 = []
>>> for i in range(1, 10):
... power2.append(i*i)
...
>>> power2
[1, 4, 9, 16, 25, 36, 49, 64, 81]
Python有一个非常强大的功能,就是列表解析,它这样使用:
>>> squares = [x**2 for x in range(1, 10)]
>>> squares
[1, 4, 9, 16, 25, 36, 49, 64, 81]
break和continue
break
,在上面的例子中已经出现了,其含义就是要在这个地方中断循环,跳出循环体。
while...else
while...else
有点类似if ... else
,只需要一个例子就可以理解。 当然,一遇到else
了,就意味着已经不在while循环内了。
for...else
除了有while...else
外,还可以有for...else
。这个循环也通常用在当跳出循环之后要做的事情。