3

问我:通过过滤 lowers 列表,创建并打印一个单词的前半部分与后半部分匹配的单词列表。示例包括“bonbon”、“froufrou”、“gaga”和“murmur”。

到目前为止我所拥有的:

[word for word in lowers if list.(word)(1:len(word)/2:)==list.(word)(len(word)/2::)]

我不确定如何将单词列成列表,因此我只能将某些字符用于此过滤器。我知道这行不通,但到目前为止这是我的逻辑。

4

2 回答 2

2

试试这个:

[word for word in lowers if word[len(word)//2:] == word[:len(word)//2]]

于 2012-10-01T02:33:20.473 回答
2

逻辑错误:您从索引 1 而不是 0 切片list.(word)(1:len(word)/2:)

语法错误:list.(word)语法不正确,列表切片使用 [ ] 而不是 ( )。简单地用word[start:stop]它来打破它

采用:

[word for word in lowers if word[:len(word)//2]==word[len(word)//2:]]

编辑:感谢 Ignacio Vazquez-Abrams 的评论 - 使用整数除法 ( // 运算符 ) 实现 Python 3 兼容性

于 2012-10-01T02:57:27.850 回答