【问题标题】:Or condition in list comprehension或列表理解中的条件
【发布时间】:2016-09-18 03:42:45
【问题描述】:

有没有办法以更简洁的方式完成以下任务?如果我有很多值,那么我的脚本将变得非常不可读。

当前代码

import xlrd  
filename = r'H:\Book1.xls'
wb = xlrd.open_workbook(filename)
sh1 = wb.sheet_by_index(0)
data = [sh1.row_values(row) for row in range(sh1.nrows) if 1 in sh1.row_values(row) or 9 in sh1.row_values(row) ]
print(data)

代码结果

[[1.0, 2.0, 3.0, '', 4.0, '', 6.0], ['', '', '', '', 9.0, '', '']]

所需的语法

data = [sh1.row_values(row) for row in range(sh1.nrows) if 1,9 in sh1.row_values(row)]

另外,是否可以传入包含 1、9 等的列表或某个对象?

【问题讨论】:

  • if {1, 9} & set(sh1.row_values(row)) 也许?
  • 你可以使用any:if any(i in sh1.row_values(row) for i in (1, 9))
  • 感谢 AnthonySottile 和 njzk2
  • @Dot_Py 你刚刚编辑了标签吗?嗯,这是获得文案编辑徽章的一种方法,哈哈

标签: python conditional-statements list-comprehension


【解决方案1】:

使用一组:

if {1,9}.intersection(sh1.row_values(row))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-17
    • 2023-02-14
    • 2020-05-29
    • 1970-01-01
    • 2022-12-24
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多