Python学习笔记3-条件与循环与其它语句

2019年2月5日 0 条评论 296 次阅读 0 人点赞

条件, 循环和其他语句

print

多个参数用逗号分隔, 会自动添加空格, 用加号连接不会

import重命名

>>> from math import sqrt as f
>>> f(10)
3.1622776601683795

赋值

# 序列解包
x, y = 1, 2

# 用星号收集多余的值
>>> a, *b, c = 1, 2, 3, 4, 5
>>> a, b, c
(1, [2, 3, 4], 5)

# 链式赋值, 将多个变量关联到同一个值
x = y = [1, 2, 3]

# 增强赋值(+=, -=, /=, *=, %=)
x += 10 # x = x + 10

条件语句

Python中, 以下值都被视为假:

False, None, 0, "", (), [], {}

其他都为真

x = 10;
if x < 0:
    print("a")
elif 0 <= x <= 10:
    print("b")
else:
    print("c")

比较运算符'=='比较两个对象是否相等

相同运算符'is'检查两个对象是否相同(两个变量是否指向同一个对象)

成员资格运算符'in'

布尔运算符: and, or, not

断言(P75)

assert: 检查条件是否为真:

>>> x = 0
>>> assert x != 0, 'x can not be 0'
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    assert x != 0, 'x can not be 0'
AssertionError: x can not be 0

循环

while

for

对可迭代对象进行遍历:

>>> for i in range(1, 10, 2): print(i)

1
3
5
7
9
>>> for i in range(10, 1, -3): print(i)

10
7
4
>>> 

range()参数功能类似于切片, 产生一个序列

并行迭代

使用zip函数将多个个序列缝合, 返回一个由元组组成的序列

>>> x = list(range(1, 5))
>>> y = list(range(5, 10))
>>> list(zip(x, y, x))
[(1, 5, 1), (2, 6, 2), (3, 7, 3), (4, 8, 4)]

迭代时获取索引

使用enumerate函数, 这个函数提供索引-值对

>>> for index,value in enumerate(x):
    print(f"x[{index}]={value}")
    
x[0]=1
x[1]=2
x[2]=3
x[3]=4

反向迭代和排序后迭代

两个函数: reversed和sorted

break, continue和循环else

类似C++, 循环else跟在循环后面, 当没有调用break时才执行else子句

简单推导

列表推导:

>>> [(i, j) for i in x for j in y if j%i==0]
[(1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (2, 6), (2, 8), (3, 6), (3, 9), (4, 8)]


# 将首字母相同的男孩女孩配对
>>> girls = ['alice', 'bernice', 'clarice']
>>> boys = ['chris', 'arnold', 'bob']

>>> lettleGirls = {}
>>> for girl in girls:
	lettleGirls.setdefault(girl[0], []).append(girl)

>>> print([b+'+'+g for b in boys for g in lettleGirls[b[0]]])
['chris+clarice', 'arnold+alice', 'bob+bernice']

使用花括号执行字典推导:

>>> s = {i:"%d squared is %d"%(i, i**2) for i in range(10)}
>>> s[8]
'8 squared is 64'

pass, del和exec, eval

pass: 什么都不做, 作为占位符

del: 删除对象和名称本身

exec: 执行字符串中的python代码

eval: 计算字符串中的表达式的值并返回

可以向exec和eval提供第二个字典实参, 代表名称空间

>>> scope = {}
>>> exec('x=10', scope)
>>> scope
{'__builtins__': ...一大堆东西..., 'x':10}

litmxs

这个人太懒什么东西都没留下

文章评论(0)