在列表理解中使用集合

时间:2012-11-12 19:04:51

标签: python

我想做什么: 创建并打印一个单词列表,其中单词的反转位于小写单词集合中。例如,“timer”及其反向“remit”都在小写单词列表中。

到目前为止:

     s = set(lowers)
     [word for word in s if list(word).reverse() in s]

我只是得到一个空列表。

5 个答案:

答案 0 :(得分:4)

只需使用[::-1],此处不需要使用list(),list(word).reverse()会返回None,因为它会就地更改列表。您也可以使用"".join(reversed(word)),但我认为只需word[::-1]就足够了:

[word for word in s if word[::-1] in s]

In [193]: word="timer"

In [194]: print list(word).reverse()
None

In [195]: word[::-1]
Out[195]: 'remit'

In [196]: "".join(reversed(word))
Out[196]: 'remit'

答案 1 :(得分:3)

list.reverse()方法可以反转列表。其返回值为None。如果要反转字符串,只需使用word[::-1]

答案 2 :(得分:2)

list.reverse()反转列表并且不返回任何内容。您需要"".join(reversed(list))

答案 3 :(得分:2)

试试这个:

s = set(lowers)
[word for word in s if word.lower()[::-1] in s]

答案 4 :(得分:0)

您应该使用[::-1]来反转字符串 -

[word for word in s if word[::-1] in s]