簡體   English   中英

如何索引python列表中的中間字符

[英]How to index a middle character in a list in 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_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)返回一個索引,而不是字符或element 所以你使用array[index_mid]來獲取字符,然后將它附加到middle_list

正如另一個答案所指出的,錯誤在這里:

middle_letter = a_list.index(middle_index)

index()方法在列表中查找等於middle_index (在本例中為 2)的元素,嘗試返回該元素的索引,但由於列表中沒有等於 2 的元素,因此您會收到該錯誤。 要找到middle_letter ,您應該直接訪問列表項:

middle_letter = item[middle_index]

另請注意,您正在列表上使用lower()方法,這會導致錯誤。 為了解決這個問題,您可以在每次循環迭代的middle_letter上使用lower()並簡單地返回middle_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

您的代碼存在一些問題。

  • 該函數應該返回一個字符串,但您將 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM