1.布尔类型
#demo 布尔类型举例
b = 100 < 101
print (b)
表达式b = 100 < 101 称为布尔表达式,变量b就是布尔类型变量。
比较运算符: < 、 > 、 <= 、 >= 、 == 、 !=
逻辑运算符: not and or
<1>逻辑运算符
not 取反;and 与运算(同真才为真);or 或运算(同假才为假)
注:
a. 优先级。在只有or和and的情况下,从左往右依次运算。当表达式中出现not,在没有括号的情况下,需先对not后的变量取反,然后再做其他运算。例如:a = false,b = true,a or not b的结果为false; not (a and b)的结果为true。
b.狄摩根定律。not (a and b) 相当于 not a or not b ; not (a or b) 相当于 not a and not b。
2.列表(list)
列表就是多项数据组合而成的一个数据结构,每一项数据称为元素(element)。
声明: 列表名 = [元素0,元素1,元素2,......,元素n]
[]内不包含任何元素,成为空列表。如:L = [] 或 L = [1,2,3]
列表中的元素可以是相同的数据类型,也可以是任意不同的数据类型,如整型,浮点型,字符串类型, 甚至是列表本身。如: L = [1, 1.3, "2", "China", ["I", "am", "another", "list"]] 。
<1>获取列表中的元素
通过索引获取元素,Python中元素下标从0开始;len()函数可以获取列表的长度;若获取列表中的元素列表,如上面的例子,获取元素“am” ,即L[4][1] ;
<2>列表的基本操作
(1)修改:通过索引值来修改相应位置上的数值,如 L[0] = 2
(2)添加:append()函数,在列表末尾添加一个元素;
#demo 列表append方法
L = [1,1.3,"2","China",["I","am","another","list"]]
L.append(3)
print (L)
#运行结果:L = [1,1.3,"2","China",["I","am","another","list",3]
append()函数是列表的专属方法,使用方式为列表名.append() ;
其他方法:extend() 、insert() 、"+="等
(3)删除:remove()函数, remove(x) 会删除列表中第一次出现的x 。
#demo 列表remove方法
L = [1,1.3,"2","China",["I","am","another","list"]]
L.append(1)
print (L)
#L.remove(3) 报错
#运行结果:L = [1.3,"2","China",["I","am","another","list"]
使用remove并不需要知道元素的具体位置,只要知道列表中有这个元素即可;
判断元素是否在列表中的方法为:成员关系操作符in
#demo 判断元素是否在列表中
L = [1,1.3,"2","China",["I","am","another","list"]]
print ("China" in L) #输出为True
print ("I" in L) #输出为False
#第二个输出为False,因为in只判断元素是否在列表中,却不会继续判断元素是否在子列表中,而"I"在子列表中,所以返回False; 修改为:
print ("I" in L[4])
not in 判断某个元素是否不在序列中。
(4)分片:一次性获取多个元素
L[index1:index2] 获取索引范围 index1到 (index2-1)的所有值
index2 <= index1 ,则分片结果为空表
index2 为空,则获取从index1开始往后的所有值
index1为空,则获取从列表第一个元素到index2 - 1位置的所有值
index1 和 index2 都为空,则获取整个列表,相当于复制列表,同L[0 : len(L)] L[: len(L)] L[0:] L[:]
L[index1:index2:stride] stride表示步长,如L[::2] 结果为 L[0]、L[2]、L[4] ;stride默认为1,不能为0,可以为负值,为负值表示从右向左提取元素
注意:分片操作是产生新的列表,不会改变原有列表。
<3>列表中常用操作符
连接(+):将两个列表合并成新的列表 ,如:L1 = [1,2,3] L2 = [3,4,5] L1 + L2的结果为 [1,2,3,3,4,5]
复制(*):对于列表而言,操作符 * 表示将原列表重复复制多次。如:L = [0] * 100表示将列表[0]复制100次,这会产生一个含有100个0的列表。
#demo 解二维线性方程组
#列表A = [[a0,b0],[a1,b1]] 表示a0 * x + b0 * y = c0, a1 * x + b1 * y = c1的系数,C = [c0,c1]表示等式结果
#求解 2x + y = 4,3x -2y = -1
A = [[2,1],[3,-2]]
B = [4,-1]
if A[0][0] == 0:
y = B[0] / A[0][1]
x = (B[1] - A[1][1] * y) / A[1][0]
elif A[1][0] == 0:
y = B[1] / A[1][1]
x = (B[0] - A[0][1] * y) / A[0][0]
else:
b = A[0][1] * A[1][0] - A[1][1] * A[0][0]
c = B[0] * A[1][0] - B[1] * A[0][0]
if((b == 0) and (c == 0)): print ("Infinite Solution")
elif(b == 0): print ("No Solution")
y = c / b
x = (B[0] - A[0][1] * y) / A[0][0]
print ("x = ",x,"y = ",y)
3.字符串
也是一种序列,可以通过索引获取元素。
创建字符串,在字符两边加上单引号或双引号,字符串和列表类似,索引和分片都可以使用, 运算符"+"、 "*"、 in 、 not in都可以使用。
字符串的内容是不可变的。S = "abcdrfg" ; S[0] = 'f' 这样程序会报错。 字符串不能使用append等方法
<1>字符串类型与数值型相互转化
数值转化为字符串类型,使用函数str()
字符串转化为数值,int() 、 float()
#转换
p = 123.45
s = str(p) #s = "123.45"
str = "123"
int(str) # 123
float(str) # 123.0
str = "123.45"
float(str) # 123.45
int(str) # 报错
<2>字符串转化为列表
list()函数 ,将每个字符作为一个元素保存在列表中, 如 str = "123, 45" ;list(str) 返回结果 ['1','2','3',','' ','4','5'] ,逗号和空格都算字符;
split()函数 分隔 ,如 L = str.split(",") 返回结果 L 为 ["123"," 45"]
将L转化为纯整型列表 L = [int(e) for e in L] 结果为 L = [123, 45]