一个语句中运算没有前后顺序,换言之,在以下代码中,不是讲a的值改变后才对b进行a+b的运算,就是说b还是原来的没改变的a和b相加之和。
a, b = 0 , 1
while b < 100 :
a, b = b, a+b
#输出菲波那切数列 (1 1 2 3 5 8 ...)
- 默认情况下,== print() 除了打印你提供的字符串之外,还会打印一个换行符,所以每调用一次 print() 就会换一次行 ==,如同上面一样。
- 你可以通过 print() 的另一个参数 end 来替换这个换行符,就不会自动换行了
print(b, end = ' ')
创建一个list a
a.append(x) x将被插入到list末尾
a.insert(n,x) x将被插入到list的第n号位置(从0开始计算位置)
如果插入的是一个list,并不是把list中的element插入,而是作为一个整体(二维list)插入到该位置。
a.count(x) 返回x在list中出现的次数(没有的话就是返回0次)
a.remove(x) 值为x的第一项被删除
a.sort() 将list按照从小到大顺序排序 (但前提是所有元素可以比较)
a.extend(x) x为另一个list,将x中所有元素加入到a中
del a[x] 使用del关键词删除指定位置的元素
a.pop(i) 当()中无i参数时,弹出(从list中删除并返回)最后一个元素,若有i参数时,弹出位置为i的元素
可以range函数返回值补充一个list的元素
如下例:
squares = []
for x in range(1,15,2)
squares.append(x ** 2)
#squares = [ 1, 9 , 25, 49, 81, 121, 169]
但是这样会留下变量x (x=13 )可能对后面的程序有影响。
如下方法可以避免x变量在循环完毕后还存在:
squares = list(map(lambda x: x**2, range(10)))
#等价于下式
squares = [x**2 for x in range(10)]
#这个式子为列表推导式
列表推导式由包含一个表达式的中括号组成,表达式后面跟随一个 for 子句,之后可以有零或多个 for 或 if 子句。结果是一个列表,由表达式依据其后面的 for 和 if 子句上下文计算而来的结果构成。
例如,如下的列表推导式结合两个列表的元素,如果元素之间不相等的话:
>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
等同于
>>> combs = []
>>> for x in [1,2,3]:
... for y in [3,1,4]:
... if x != y:
... combs.append((x, y))
...
>>> combs
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
值得注意的是在上面两个方法中的 for 和 if 语句的顺序。
列表推导式也可以嵌套
>>> a=[1,2,3]
>>> z = [x + 1 for x in [x ** 2 for x in a]]
>>> z
[2, 5, 10]
元组(tuple)
元组是由数个逗号分割的值组成。
可以对元组进行拆封操作,并赋值给多个变量,如下:(divmod(a,b)含义是)
>>> divmod(15,2)
(7, 1)
>>> x, y = divmod(15,2)
>>> x
7
>>> y
1
元组是不可变类型,这意味着你不能在元组内删除或添加或编辑任何值。如果你尝试这些操作,将会出错!(即不能使用del等关键词)
要创建只含有一个元素的元组,在值后面跟一个逗号
>>> a = (123)
>>> a
123
>>> type(a)
<class 'int'> #不加逗号则创建出来的是数字类型而非元组类型
>>> a = (123, )
>>> b = 321,
>>> a
(123,)
>>> b
(321,)
>>> type(a) #通过type()方法可以得知任意变量的数据类型
<class 'tuple'> #加逗号出来的类型才为tuple
>>> type(b)
<class 'tuple'>
集合
集合是一个无序不重复元素的集
基本功能:关系测试和消除重复元素
集合对象支持union(联合),intersection(交),difference(差),symmetric difference(对称差集)(对称差集就是多个集合除去相交部分所有元素的集合)
创建:可以使用大括号{}和set()方法
注意:
(1)创建空集合必须使用set()方法,因为{}创建的是字典而非集合。
(2)set([iterable]) set()方法括号内必须为可迭代对象