строковые индексы должны быть целыми числами в python почему? - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь создать функцию, которая получает список строк и возвращает новый список только тех строк, которым первый и последний символы равны

`

def compareLastAndFirst (list):
    newList=[]
    for i in list:
        st=list[i]
        if (st[0]==st[len(st)-1]):
            newList.append(st)     

    return newList
list=input ("Enter your list")
print (compareLastAndFirst (list))

и я получаю сообщение об ошибке "строковые индексы должны быть целыми числами ps. Я только начал кодировать в python недавно

1 Ответ

0 голосов
/ 20 января 2020

Во-первых, давайте изменим имя переменной с list на inputString.

Теперь, когда вы получаете ввод от пользователя, это String, и вам нужно преобразовать его в список.

Когда вы перебираете строку с for i in list1, значение i устанавливается на символ в строке один за другим. Теперь, когда вы делаете inputString[i], вы пытаетесь получить доступ к символу по определенному индексу, но предоставляете «символ» в качестве значения индекса, что недопустимо.

Вы можете взять пользовательский ввод и преобразовать его в список, как показано ниже:

inputString = raw_input("Enter your list")    # You can simply type in your strings with comma separation (>>string,test,pool)
strList = inputString.split(",")

Остальная часть вашего кода в порядке и будет работать как положено. Если вы хотите оптимизировать немного ниже, есть способ:

def compareLastAndFirst (strList):
    newList=[]
    for i in strList:   # this gives you the strings in list one-by-one.
        if (i[0]==i[-1]):     #you can access the last index of string by giving index=-1
            newList.append(i)     
    return newList

inputString = raw_input("Enter your list")
strList = inputString.split(",")
print (compareLastAndFirst (strList))

Вы также можете попробовать разные способы ввода пользовательского ввода и непосредственного преобразования / сопоставления их в список. Это может быть полезно https://www.geeksforgeeks.org/python-get-a-list-as-input-from-user/

...