Python 列出 if else 串联添加元素

Python lists if else concatenation adding elements

我正在尝试这样做:

for i in range(len(daysDial)):
    if dayDial[i] in daysPresence:
        for j in range(len(daysPresence)):
            if daysDial[i]== daysPresence[j]:
                rowsPresence.append(dataPresencePy[j][1])

    else:
        rowsPresence.append("no presence")

换一种方式:

rowsPresence = [dataPresencePy[j][1] for i in range(len(daysDial)) 
                if daysDial[i] in daysPresence else "no presence" 
                for j in range(len(daysPresence))
                if daysDial[i] == daysPresence[j]]

但它不能正常工作。这个可以吗

你的循环顺序错误;我想你想要的是:

[[dataPresencePy[j][1] for j in range(len(daysPresence)) 
  if daysDial[i] == daysPresence[j]] 
 if daysDial[i] in daysPresence else "no presence" 
 for i in range(len(daysDial))]

但是,正如评论中所指出的,与展开的循环版本相比,它的可读性要差得多,而且性能可能也不高。

此外,如果列表的元素是字符串 "no presence" 或列表 - 为什么不是 None 或空列表呢?