Понимание списка и Как использовать цикл For для изменения каждого типа элемента в списке с «list» на «float» в Python - PullRequest
0 голосов
/ 10 сентября 2018

Я новичок в питоне. Недавно я пришел к выводу, используя цикл for для реформирования списка чисел, чтобы удалить тип данных «list»

Сначала я сделал это:

list1 = [[1],[2],[3]]
list2 = []
for x in list1:
    list2.append(x)
print(list2)

Но я все еще получил ответ:

[[1], [2], [3]]

Тогда я попробовал:

list2 = []
for x in list1:
    list2.append(x[0])

Я наконец получил ответ, который хочу:

[1, 2, 3]

Не могли бы вы рассказать, что делает "x [0]" в этом цикле for; Я думал, что этот индекс будет означать только первый элемент в списке.

Спасибо!

Ответы [ 5 ]

0 голосов
/ 10 сентября 2018

Вы перебираете список, содержащий список. например:

a = [[1], [2], [3]]
a[0] will contain list [1] #i.e it is containing list
a[1] will contain list [2] 
a[2] will contain list [3]

Если вы хотите получить доступ к содержимому из списка, вам нужно пройти 2 индекса. например:

a[0][0] will contain 1 #i.e it is containing element
a[1][0] will contain 2
a[2][0] will contain 3

Вы также можете попробовать ключевое слово extend, чтобы добиться того же. Метод extend() принимает один аргумент (список) и добавляет его в конец.

list1 = [[1],[2],[3]]
list2 = []
for x in list1:
    list2.extend(x)
print(list2)
0 голосов
/ 10 сентября 2018
list1 = [[1], [2], [3]]

for x in list1:
    list2.append(x[0])

Хорошо, давайте посмотрим, что мы здесь делаем:

for x in list1:

Ну x в этом цикле будет представлять [1], [2], [3], которые представляют собой список, содержащий определенное число в позиции 0.

Немного больше перспективы, давайте посмотрим на это так:

list1[0][0] = 1

list1[1][0] = 2

list1[2][0] = 3

0 голосов
/ 10 сентября 2018

Когда вы идете

for x in list1:

и распечатайте x вы получите:

>[1]
>[2]
>[3]

Потому что каждый элемент в list1 все еще списки! Списки имеют только один элемент, но они все еще хранятся в списке. Когда вы используете x[0], вы говорите Python, что хотите получить доступ к первому элементу каждого списка, то есть к номеру, который вы хотите.

Еще одна вещь, которую вы могли бы сделать, которая была бы быстрее, чем цикл for, - это использование понимания списка:

 list2 = [x[0] for x in list1]
0 голосов
/ 10 сентября 2018

Не могли бы вы сказать, что делает "x [0]" в этом цикле for; Я думал, что этот индекс будет означать только первый элемент в списке.

list1 = [[1],[2],[3]] - это не просто список, а список списков . Каждый элемент list1 является списком, хотя только с одним подэлементом. Таким образом, вы фактически перебираете каждый список в вашем списке list1, выбирая первый элемент в позиции 0 (и это все, что есть) и добавляете его в свой новый список list2.

0 голосов
/ 10 сентября 2018

x[0] возвращает элемент с индексом 0 списка x, поэтому, добавляя новый список с x[0] в цикле for, вы скорее добавляете значение в подсписок чем сам подсписок, тем самым достигая желаемого эффекта, сглаживая список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...