如何格式化嵌套列表理解行?

How to format a nested list comprehension line?

我想生成一个列表理解,它接收数字列表并根据列表中的值调整数字。

例如:

如果列表中的数字 > 255 我希望列表推导式取值 255 如果列表中的数字 < 0 我希望列表理解取值 0 列表理解应接受任何其他值(0 到 255 之间)。

我使用的代码是:

num = [260, -2, 124]

adj = [[0 if (n <= 0) else 255 if (n > 255) else n in n if n in range(1,255)]] for n in num)

print(adj)

我已经尝试过上述方法,但出现语法错误:

File "/Users/home/Dropbox/Python_general_work/Python FB Groups/hex_converter.py", line 54
adj = [[0 if (n <= 0) else 255 if (n > 255) else n in n if n in range(1,255)]] for n in nums)
                                                                          ^
SyntaxError: invalid syntax
Process finished with exit code 1

你能建议如何构造列表推导式以使其有效吗?

谢谢。

adj = [0 if n <= 0 else 255 if n >= 255 else n for n in num]

您不需要列表理解中的附加 range(1, 255) 作为前面的条件,确保数字在 [1, 255] 范围内。

我会使用 min 从顶部裁剪,max 从底部裁剪:

adj = [min(255, max(0, n)) for n in num]