Обращение к определенным буквам в Python
Есть такая вот задача:
Есть список
list = ['hello', 'hi', 'hola', 'hey']. Надо из этого списка составить новый список, который будет состоять из каждой второй буквы из списка.
Я понимаю, как обратиться с элементу списка, но как от туда выбрать эти буквы не понимаю.
Мой код:
list = ['hello', 'hi', 'hola', 'hey']
newList = []
for letter in list:
newList.append(list[2])
print(newList)
Ответы (2 шт):
У вас почти получилось, но:
- Нужно было обращаться к второму элементу (индексация в питоне начинается с
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.