如何格式化嵌套列表理解行?
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]
我想生成一个列表理解,它接收数字列表并根据列表中的值调整数字。
例如:
如果列表中的数字 > 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]