luck78 发表于 2021-9-25 17:19:18

推导式

for each in s:
    if res and res[-1].lower() == each.lower() and res[-1] != each:
      res.pop()
    else:
      res.append(each)

请教if后面的判断句子怎么理解?怎么分解的看,现在这个推导式不知道从哪里看起?

suchocolate 发表于 2021-9-25 17:30:21

3个元素判断:
第一个res单独判断,非0或0。
第二和三是用是否相等判断的。
三个元素都为非0,整个if成立。
if res and (res[-1].lower() == each.lower()) and (res[-1] != each):

Twilight6 发表于 2021-9-25 18:25:35


if res and res[-1].lower() == each.lower() and res[-1] != each:

先检查条件 res ,单独一个变量作为条件时,只要变量不为 空字符串、空字典、空列表等 均表示为 True

而后检查条件 res[-1].lower() == each.lower() ,这里就是看字符串第一个字符串和最后字符是否相等

用 lower 函数同时转换为小写字母,即这里条件的意思就是:不区分大小写比较字符是否相同 若相同 返回 True ,反之 False

最后判断 res[-1] != each 判断字符是否完全相同

因为条件都是用 and 进行连接,所以必须都为 True 才执行 if 下的代码块,反之只要一个不为 True 就执行 else
页: [1]
查看完整版本: 推导式