如何解决如何在python中故意导致翻转?
我想引起翻转,例如在原始文明游戏中,甘地已经是最和平的,然后玩家将最大和平主义值 (255) 增加 1 并变为 0(愤怒)。我想对列表或数组进行算术运算并定义一个范围(例如 0-255),如果算术运算后的值超出范围(负值或超过 255 的任何值),它将从头开始或向后。 示例:
list1 = [10,118,251,43,195] # add 150 to each value
output_list = [160,268,401,193,345] # but I want [160,13,146,90]
同样,如果我从每个值中减去,任何低于 0 的值都会从 255 回滚。
附言它不一定是一个列表,它也可以是一个数组或其他一些方法。目前,我编写了一个 for 循环来检查每个值,但它不够优雅,并且仅在超出/低于该范围内的最小值/最大值小于/大于 2 倍时才有效。
# My current code:
for i in range(len(list1)):
if list1[i] > 255:
list1[i]=list1[i] - 255
if list1[i] < 0:
list1[i]=list1[i] + 255
谢谢!
解决方法
您所指的这种“翻转”运算通常称为“模”或“余数”,因为它对应于找到欧几里得除法的余数。有时也称为“环绕”。
例如,当我们计算一天中的小时数时,我们计算模 12,因此 13:00 等于 01:00。
模运算在python中表示为%
。您可以实现考虑阈值并应用模运算符的自定义 add
函数:
def add(x,y,threshold=256):
return (x + y) % threshold
list1 = [10,118,251,43,195]
output_list = [add(x,150) for x in list1]
print(output_list)
# [160,12,145,193,89]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。