Обращение к определенным буквам в Python

Есть такая вот задача:

Есть список list = ['hello', 'hi', 'hola', 'hey']. Надо из этого списка составить новый список, который будет состоять из каждой второй буквы из списка.

Я понимаю, как обратиться с элементу списка, но как от туда выбрать эти буквы не понимаю.

Мой код:

list = ['hello', 'hi', 'hola', 'hey']
newList = []

for letter in list:
    newList.append(list[2])
print(newList)

Ответы (2 шт):

Автор решения: gil9red

У вас почти получилось, но:

  • Нужно было обращаться к второму элементу (индексация в питоне начинается с 0, поэтому второй элемент будет иметь индекс 1)
  • В цикле нужно было не к списку обращаться, а к его элементам

Пример:

items = ['hello', 'hi', 'hola', 'hey']

new_list = []
for letter in items:
    new_list.append(letter[1])

print(new_list)
# ['e', 'i', 'o', 'e']

Через списочное выражение:

items = ['hello', 'hi', 'hola', 'hey']
new_list = [x[1] for x in items]
print(new_list)
# ['e', 'i', 'o', 'e']

PS.

Думаю, имеет смысл добавить наглядный пример почему нельзя использовать built-in имена, такие как list:

print(list('hello'))
# ['h', 'e', 'l', 'l', 'o']

list = ['hello', 'hi', 'hola', 'hey']

print(list('hello'))
# TypeError: 'list' object is not callable

Как видно, обращение будет к переменной с таким же именем, это простой способ "выстрелить себе в ногу".

→ Ссылка
Автор решения: Константин Комиссаров

Если я правильно понял задачу:

base_list = ['hello', 'hi', 'hola', 'hey']
new_list = [word[1] for word in base_list]
print(new_list) # ['e', 'i', 'o', 'e']

Если вы имели в виду не каждую вторую букву в слове, а каждую вторую букву от всего списка, то нужно другое решение, напишите в комменты.

P. S. list - это очень плохое имя для переменной, т.к. это зарезервированное слово в python.

→ Ссылка