gpt4 book ai didi

python - 过滤掉python列表中重复的字符串化算术运算的最佳方法?

转载 作者:太空宇宙 更新时间:2023-11-04 01:50:45 26 4
gpt4 key购买 nike

我有以下列表:['2*3=6', '3*2=6', '1+10/2=6.0', '2/1*3=6', ' 2*3/1=6', '3/1*2=6', '3*2/1=6', '10/2+1=6']

我想过滤掉所用数字相等的方程式。我的意思是我想获得一个只包含唯一数字组合的方程式列表。例如:2*3 或 3*2、1+10/2=6.0 或 10/2+1=6.0 等。我还想打印出计算中未使用的数字,例如:(3*2 =6 未使用:1 和 10) 等

一直无法编写执行此操作的函数,因为我看不出我们需要比较什么。我希望此函数适用于 1 到 9。因此,1 为我们提供了列表:['2-1=1', '3-2=1', '1*3-2=1' , '3-1*2=1', '3*1-2=1', '3/1-2=1', '3-2*1=1', '3-2/1=1' ] 我想以同样的方式过滤它。感谢您的帮助!

最佳答案

这是一种非常简单的方法:

import re

eqs = ['2*3=6', '3*2=6', '1+10/2=6', '2/1*3=6', '2*3/1=6', '3/1*2=6', '3*2/1=6', '10/2+1=6']

by_digits_used = {}

remaining_digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for eq in eqs:
used_digits = [int(f) for f in re.findall(r'\d*', eq) if f != ""] # Find all digits in the equations
used_digits.sort() # Ensure they're always in the same order
used_digits = tuple(used_digits) # Convert to tuple

# Remove digits that were used
for digit in used_digits:
if digit in remaining_digits:
remaining_digits.remove(digit)

# Store equation by the digits used
by_digits_used[used_digits] = by_digits_used.get(used_digits, []) + [eq]

print(by_digits_used)
print(remaining_digits)

结果:

# Equations by digits used
{(2, 3, 6): ['2*3=6', '3*2=6'], (1, 2, 6, 10): ['1+10/2=6', '10/2+1=6'], (1, 2, 3, 6): ['2/1*3=6', '2*3/1=6', '3/1*2=6', '3*2/1=6']}
# Unused digits
{0, 4, 5, 7, 8, 9}

关于python - 过滤掉python列表中重复的字符串化算术运算的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58079735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com