python 2.7
常规的表达式求值,我们都会根据计算的优先级来计算。比如/的优先级就高于+-。但是小易所生活的世界的表达式规则很简单,从左往右依次计算即可,而且小易所在的世界没有除法,意味着表达式中没有/,只有(+, - 和 )。现在给出一个表达式,需要你帮忙计算出小易所在的世界这个表达式的值为多少
思想:从左向右计算不考虑运算符的优先级,分别将数值和运算符放入两个list中
#coding:utf-8
def compute_express(s):
arr1 = list(s)
num = []
operator = []
for i in range(int(len(arr1)/2)):
num.append(arr1[2*i])
operator.append(arr1[2*i+1])
#将最后一个数加入
num.append(arr1[-1])
k = num[0]
for i in range(len(operator)):
#eval计算字符串值
k = eval(str(k)+str(operator[i])+str(num[i+1]))
return k
print('the result is:',compute_express('3+5*7'))
判断是否为数字和字母
s.isalnum(),如果是数字或字母,返回True,否则返回False
python中深拷贝和潜拷贝
深拷贝:copy.deepcopy()原数组在怎么变,都不变
浅拷贝:copy.copy()原数组中的某个数组改变,拷贝元素改变,原数组增加或减少元素,拷贝数组都不变
赋值:原数组怎么变,拷贝数组怎么变
>>> a = [[1,2,3],[4,5,6]]
>>> b = a
>>> import copy
>>> c = copy.copy(a)
>>> d = copy.deepcopy(a)
>>> a.append(700)
>>> a
[[1, 2, 3], [4, 5, 6], 700]
>>> b
[[1, 2, 3], [4, 5, 6], 700]
>>> c
[[1, 2, 3], [4, 5, 6]]
>>> d
[[1, 2, 3], [4, 5, 6]]
>>> a[0].append(800)
>>> a
[[1, 2, 3, 800], [4, 5, 6], 700]
>>> b
[[1, 2, 3, 800], [4, 5, 6], 700]
>>> c
[[1, 2, 3, 800], [4, 5, 6]]
>>> d
[[1, 2, 3], [4, 5, 6]]