Во-первых, давайте изменим имя переменной с 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/