3 回答
TA贡献1835条经验 获得超7个赞
您的功能已关闭,因为您正在将列表索引与您尝试匹配的值进行比较i == x
。您想使用myList[i] == x
. 但似乎您实际上想检查长度,所以len(myList[i]) == x
.
但是,我更喜欢迭代循环中的实际元素(或 Joran Beasley 在评论中指出的列表理解)。您还提到您想检查是否为特定长度的字符串,因此您还可以添加对对象类型的检查:
def listNum(myList, x): return [item for item in myList if type(item) is str and len(item) == x]
TA贡献1817条经验 获得超6个赞
使用setdefault()方法。此解决方案应该为您提供映射到各自单词的所有单词长度的字典
代码
myList = ["Hello", "How","are", "you"]
dict1 = {}
for ele in myList:
key = len(ele)
dict1.setdefault(key, [])
dict1[key].append(ele)
输出
我想这是您想要实现的输出。
>>> print(dict1)
{5: ['Hello'], 3: ['How', 'are', 'you']}
您可以使用它来查询字典并获取与其字长相对应的单词。例如dict1[5]会返回'hello'
TA贡献1804条经验 获得超7个赞
试试这个代码。
代码
def func_same_length(array,index):
res = [array[i] for i in range(0,len(array)) if len(array[index]) == len(array[i]) and i!=index]
return res
myList = ["Hello", "How", "are", "you"]
resSet = set()
for index in range(0,len(myList)):
res = func_same_length(myList,index)
for i in res:
resSet.add(i)
print(resSet)
输出
{'How', 'are', 'you'}
添加回答
举报