逻辑符合任务之一
创建一个不使用 "or "关键字的OR函数,该函数接收一个布尔值列表并对所有的布尔值进行OR运算。
假设有1到6个变量,如果列表为空,则返回Nonepython|nil(ruby)
def alt_or(lst):
#Please do not use the OR operator
return True if any([c==True for c in lst]) else False if lst else None
继续精简代码
def alt_or(lst):
return any(lst) if lst else None
逻辑符合任务之二
给定一个布尔值数组和一个逻辑运算符,根据对数组中的值依次应用运算符,返回一个布尔值结果。
例子
booleans = [True, True, False], operator = "AND"
真与真 -> 真
True AND False -> False
最终结果返回假
booleans = [True, True, False], operator = "OR"
True OR True -> True
True OR False -> True
返回真
booleans = [True, True, False], operator = "XOR"
True XOR True -> False
False XOR False -> False
返回假
输入
一个布尔值数组(1 <= array_length <= 50)
一个指定逻辑运算符的字符串。"and", "or", "xor".
输出
一个布尔值(真或假)。
import operator
OPS = {
"AND": operator.and_,
"OR" : operator.or_,
"XOR": operator.xor
}
def logical_calc(array, op):
return reduce(OPS[op], array)
各有千秋,思路拓宽
2nd
def logical_calc(array, op):
res = array[0]
for x in array[1:]:
if op == "AND":
res &= x
elif op == "OR":
res |= x
else:
res ^= x
return res
3rd
from operator import and_, or_, xor
from functools import reduce
OPERATOR = {'AND': and_, 'OR': or_, 'XOR': xor}
def logical_calc(array, op):
return reduce(OPERATOR[op], array)
4th
def logical_calc(array, op):
ops = {
"AND": lambda x, y: x & y,
"OR": lambda x, y: x | y,
"XOR": lambda x, y: x ^ y
}
from functools import reduce
return reduce(ops[op], array)
5th
def logical_calc(array, op):
return reduce(eval('bool.__'+op.lower()+'__'),array)
6th
def logical_calc(array, op):
s = ' ' + op.lower().replace('xor', '^') + ' '
return eval(s.join(str(x) for x in array))
7th
import operator
def logical_calc(array, op):
op = '__{}__'.format(op.lower())
op = getattr(operator, op)
return reduce(op, array)
8th
def logical_calc(array, op):
return eval({ 'AND': '&', 'OR': '|', 'XOR': '^' }[op].join(map(str, array)))
9th
def logical_calc(array, op):
out = array[0]
for c in array[1:]:
if op in ('AND','OR'):
out = eval(str(out) + f" {op.lower()} " + str(c))
elif op == 'XOR':
out = not c == out
return out
一道题深挖出多少语法/知识点/技巧,大力推荐自学的好方法!
本文由mdnice多平台发布