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。这个循环也通常用在当跳出循环之后要做的事情。

 
posted @ 2016-08-18 17:32  liqiantu  阅读(164)  评论(0编辑  收藏  举报