Python3 list和str的加减乘除

本文详细介绍了Python3中list和str对象的加、减、乘、除操作。加号用于合并列表,乘号用于重复列表或字符串。减号和除号在列表和字符串间不支持,但可以通过自定义代码实现类似功能,如去除列表中重复元素。文章还提供了相关操作的实例代码。

诸神缄默不语-个人优快云博文目录

本文介绍Python3 list和str对象的加减乘除操作及其结果。

1. 加号

list只能与list相加。相加结果就是将被加的列表逐元素加到原列表中,实现两个列表的不去重合并。可参考我之前写的这篇博文Python3 list不去重合并_诸神缄默不语的博客-优快云博客第一节直接相加的方法。

简单示例:

list1=list(range(3))
print(list1)  #[0, 1, 2]
list2=list(range(5,9))
print(list2)  #[5, 6, 7, 8]

print(list1+list2)  #[0, 1, 2, 5, 6, 7, 8]

字符串的与之类似:

str1='str1'
str2='str2'

print(str1+str2)  #str1str2

2. 乘号

list只能与int格式的数字相乘,得到一个新的、重复原list元素该数字次的新list,例如:

list1=list(range(3))
print(list1)
print([list1])  #[[0, 1, 2]]

print(list1*3)  #[0, 1, 2, 0, 1, 2, 0, 1, 2]
print([list1]*3)  #[[0, 1, 2], [0, 1, 2], [0, 1, 2]]

str的与之类似:

str1='str1'

print(str1*3)  #str1str1str1

3. 减号和除号

list或str之间相减或相除的操作是不支持的。
如果想要实现类似(去除list1中在list2中出现过的元素)等功能,需要自己写相应的处理代码。

4. 其他正文中没有提及的参考资料

  1. Python3 列表 | 菜鸟教程
栈在 Python 加减乘除运算中的应用主要体现在表达式求值,常见的有中缀表达式转后缀表达式以及后缀表达式求值。以下分别介绍其原理及实现代码。 ### 后缀表达式求值 后缀表达式求值过程可使用栈来实现。在这个过程中,遇到操作数就将其压入栈,遇到操作符则从栈中弹出两个操作数进行计算,并将结果压回栈顶。当所有操作符都处理完毕,栈中剩下的唯一操作数就是表达式的值。 ```python class Stack: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[len(self.items) - 1] def size(self): return len(self.items) def do_math(op, num1, num2): # 进行 + - * / 运算 return eval(num2 + op + num1) def evaluate_postfix(expression: str): # 约定:后缀表达式 expression 是用空格隔开的一系列单词(token)构成 expression_list = expression.split() s = Stack() for i in expression_list: if i in "+-*/": s.push(str(do_math(i, s.pop(), s.pop()))) else: s.push(i) return s.pop() print(evaluate_postfix("4 5 6 * +")) print(evaluate_postfix("7 8 + 3 2 + /")) print(evaluate_postfix("17 18 + 13 12 + *")) ``` ### 中缀表达式转后缀表达式并求值 还可以使用两个栈来实现中缀表达式的四则运算,一个栈用来存放参与运算的数字,另一个栈用来存放加减乘除运算符。从左向右扫描字符串,要是数字就直接把数字压入存放数字的栈。如果碰见加减乘除四则运算符,就要与存放运算符的栈顶元素进行比较[^1]。 ```python class Stack: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[len(self.items) - 1] def size(self): return len(self.items) def infix_to_postfix(infix_expr): prec = {} prec["*"] = 3 prec["/"] = 3 prec["+"] = 2 prec["-"] = 2 prec["("] = 1 op_stack = Stack() postfix_list = [] token_list = infix_expr.split() for token in token_list: if token.isdigit(): postfix_list.append(token) elif token == '(': op_stack.push(token) elif token == ')': top_token = op_stack.pop() while top_token != '(': postfix_list.append(top_token) top_token = op_stack.pop() else: while (not op_stack.isEmpty()) and (prec[op_stack.peek()] >= prec[token]): postfix_list.append(op_stack.pop()) op_stack.push(token) while not op_stack.isEmpty(): postfix_list.append(op_stack.pop()) return " ".join(postfix_list) def evaluate_postfix(postfix_expr): operand_stack = Stack() token_list = postfix_expr.split() for token in token_list: if token.isdigit(): operand_stack.push(int(token)) else: operand2 = operand_stack.pop() operand1 = operand_stack.pop() result = do_math(token, operand1, operand2) operand_stack.push(result) return operand_stack.pop() def do_math(op, op1, op2): if op == "*": return op1 * op2 elif op == "/": return op1 / op2 elif op == "+": return op1 + op2 else: return op1 - op2 infix_expr = "3 + 4 * 2" postfix_expr = infix_to_postfix(infix_expr) result = evaluate_postfix(postfix_expr) print(f"Infix: {infix_expr}") print(f"Postfix: {postfix_expr}") print(f"Result: {result}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸神缄默不语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值