【问题标题】:Tuple Subtract statement in PythonPython中的元组减法语句
【发布时间】:2013-06-27 04:34:50
【问题描述】:

如果值大于 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 

此代码将给出正确的输出,但采用列表格式。

【问题讨论】:

  • 元组值包含什么?
  • 什么意思?你问我用它做什么?

标签: python list if-statement tuples


【解决方案1】:

要获取列表,请使用list comprehension / generator expression

>>> 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)

【讨论】:

    【解决方案2】:

    不打印值,而是将它们附加到列表中:

    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)
    

    然后,您可以将所有这些行放入list comprehension

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

    【讨论】:

      【解决方案3】:

      与往常一样,您可以使用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))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-26
        • 2011-12-31
        • 1970-01-01
        • 2016-09-25
        • 2017-08-17
        • 1970-01-01
        • 2021-02-05
        • 1970-01-01
        相关资源
        最近更新 更多