我的问题是,如果我的列表是...,如何在列表中查找具有相同字符数的字符串?
myList = ["Hello", "How","are", "you"]
我希望它返回值为3的字符串
上面列表中的示例...
["How","are","you"]
这就是我尝试过的...
def listNum(myList, x):
for i in range(len(myList)):
if i == x:
return(i)
myList = ["Hello", "How","are", "you"]
x = 3
listNum(myList, x)
答案 0 :(得分:2)
您的功能已关闭,因为您正在将列表 索引 与要与i == x
匹配的值进行比较。您要使用myList[i] == x
。但是看来您实际上是想检查长度,所以len(myList[i]) == x
。
但是,我更喜欢遍历循环中的实际元素(或列表理解,如Joran Beasley的评论中所述)。您还提到过要检查是否有一定长度的 string ,因此还可以添加对象类型的检查:
def listNum(myList, x):
return [item for item in myList if type(item) is str and len(item) == x]
答案 1 :(得分:1)
使用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'
答案 2 :(得分:0)
如果您打算将其用于进一步的增强,我建议您在一个循环中做出命令,然后就可以轻松检索任意数量的字符。如果您每次都要搜索x = 3或4,则必须遍历列表。而不是一口气做出决定。
myList = ["Hello", "How","are", "you"]
data = {}
for i in myList:
if len(i) in data:
data[len(i)].append(i)
else:
data[len(i)] = [i]
# print(data)
x = 3
print(data[x])
输出:
['How', 'are', 'you']
答案 3 :(得分:0)
我相信您可以在此处使用Python filter
函数。
# list
myList = ["Hello", "How","are", "you"]
# function that examines each element in an array and returns it if True
def filterData(item):
if(len(item) == 3):
return True
else:
return False
# filter function that takes 'function-to-run' and an array
filtered = filter(filterData, myList)
# result
print('The filtered strings are:')
for item in filtered:
print(item)
希望有帮助。干杯!
答案 4 :(得分:0)
您可以将函数groupby()
与排序列表一起使用:
from itertools import groupby
myList = ["Hello", "How", "are", "you"]
f = lambda x: len(x)
l = sorted(myList, key=f)
r = {k: list(g) for k, g in groupby(l, key=f)}
# {3: ['How', 'are', 'you'], 5: ['Hello']}
r[3]
# ['How', 'are', 'you']
答案 5 :(得分:0)
尝试此代码。
代码
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'}