Python中的元组减法语句

4

我想使用Python,在列表中对大于256的值减去256,但我希望输出结果为元组格式,这就是我需要帮助的地方。

x = [85, 229, 162, 45, 280, 186, 275, 265, 252, 188, 135, 150, 351, 326, 217, 43, 301, 281, 333, 39, 246, 150, 139, 186, 195, 132, 196, 171, 307, 272, 97, 330, 271, 179, 276, 141, 151, 214, 191, 111, 261, 290, 146]

for y in x:
    if y>256:
        print y-256
    else:
        print y 

这段代码会输出正确的结果,但是是以列表形式展现的。

元组的值会包含什么? - karthikr
你是什么意思?你是在问我用它做什么吗? - kyle k
3个回答

5
要获取列表,请使用 列表推导式 / 生成器表达式
>>> x = [85, 229, 162, 45, 280, 186, 275, 265, 252, 188, 135, 150, 351, 326, 217, 43, 301, 281, 333, 39, 246, 150, 139, 186, 195, 132, 196, 171, 307, 272, 97, 330, 271, 179, 276, 141, 151, 214, 191, 111, 261, 290, 146]
>>> [y - 256 if y > 256 else y for y in x]
[85, 229, 162, 45, 24, 186, 19, 9, 252, 188, 135, 150, 95, 70, 217, 43, 45, 25, 77, 39, 246, 150, 139, 186, 195, 132, 196, 171, 51, 16, 97, 74, 15, 179, 20, 141, 151, 214, 191, 111, 5, 34, 146]
>>> tuple(y - 256 if y > 256 else y for y in x)
(85, 229, 162, 45, 24, 186, 19, 9, 252, 188, 135, 150, 95, 70, 217, 43, 45, 25, 77, 39, 246, 150, 139, 186, 195, 132, 196, 171, 51, 16, 97, 74, 15, 179, 20, 141, 151, 214, 191, 111, 5, 34, 146)

3

不要打印这些值,而是将它们添加到一个列表中:

z = []
for y in x:
    if y>256:
        z.append(y-256)
    else:
        z.append(y)

您可以像这样缩短 if/else 语句:
z = []
for y in x:
    z.append(y-256 if y>256 else y)

然后,您可以将所有这些行放入列表推导式中:

z = [y-256 if y > 256 else y for y in x]

1

一如既往,您可以使用map(function, iterable, ...)函数或生成器表达式。生成器在此线程中已经解释过了,因此我将为您展示map的示例:

my_list = [85, 229, 162, 45, 280, 186, 275, 265, 252, 188, 135, 150, 351, 326, 217, 43, 301, 281, 333, 39, 246, 150, 139, 186, 195, 132, 196, 171, 307, 272, 97, 330, 271, 179, 276, 141, 151, 214, 191, 111, 261, 290, 146]
my_list = tuple(map(lambda x: (x - 256) if x > 256 else x, my_list))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接