如何在python中索引列表中的中间字符

如何在python中索引列表中的中间字符,python,Python,完成get_mid_letter()函数,该函数将字符串列表作为参数传递。函数返回一个字符串,该字符串由参数列表中每个单词的中间字母串联而成。函数返回的字符串应为小写字符。如果参数列表为空列表,则函数应返回空字符串 def get_mid_letter(a_list): middle_list = [] for item in a_list: middle_index = int(len(item) / 2) middle_letter = a_l

完成get_mid_letter()函数,该函数将字符串列表作为参数传递。函数返回一个字符串,该字符串由参数列表中每个单词的中间字母串联而成。函数返回的字符串应为小写字符。如果参数列表为空列表,则函数应返回空字符串

def get_mid_letter(a_list):
    middle_list = []
    for item in a_list:
        middle_index = int(len(item) / 2)
        middle_letter = a_list.index(middle_index)
        middle_list = middle_list + [middle_letter] 
    return middle_list.lower()

def test_get_mid_letter():
    print("1.", get_mid_letter(["Jess", "Cain", "Amity", "Raeann"]))
在我的例子中,它显示一条错误消息,如“2不在列表中”。
如何才能成功运行代码?谢谢

array.index(element)
返回的索引不是字符或
元素
。因此,您可以使用
array[index\u mid]
获取字符,然后将其附加到
middle\u列表中,正如另一个答案所指出的,错误在这里:

middle_letter = a_list.index(middle_index)
index()
方法在列表中查找等于
middle\u index
(在本例中为2)的元素,试图返回该元素的索引,但由于列表中没有等于2的元素,因此会出现该错误。要查找中间字母
,您应该直接访问列表项:

middle_letter = item[middle_index]
还要注意,您正在列表上使用
lower()
方法,这将导致错误。要解决此问题,您可以对每个循环迭代使用
middle\u letter
上的
lower()
,只需返回
middle\u list
,如下所示:

for item in a_list:
    middle_index = int(len(item) / 2)
    middle_letter = item[middle_index]
    middle_letter = middle_letter.lower()
    middle_list = middle_list + [middle_letter] 
return middle_list

您的代码有一些问题

  • 函数应该返回一个字符串,但您将中间的列表声明为列表而不是字符串
  • index方法返回其参数列表中的位置。您想使用[]进行访问
  • 您不是从项目中检索字符,而是从列表中检索项目
更正后的代码可能如下所示:

def get_mid_letter(a_list):
    middle_list = ""                        # declare the variable as an empty string
    for item in a_list:
        middle_index = int(len(item) / 2)   # get the middle index
        middle_letter = item[middle_index]  # get the char from the string in the list
        middle_list += middle_letter        # concatenate the char and the string
    return middle_list.lower()

如果在
for
循环中将每个单词变成一个列表
['J','e','s','s']
,那么您可以将中间索引中的字母添加到不断增长的中间字母中

def middles(listb):
    middle_word = ''
    for i in listb:
        letters = list(i)
        index = int(len(i)/2)
        letter = letters[index]
        middle_word += letter.lower()
    return middle_word

lista = ['Jess', 'Cain', 'Amity', 'Reann']

print(middles(lista))

你认为长短词中的字母是什么?
(xenial)vash@localhost:~/python/stack_overflow$ python3.7 middle.py
siia