Я вложен список следующего вида:Вложенный список - Струны для Поплавок
my_list = [['Some1', '2', '3.6', '4.5', 'GB2', '6'],
['Some2', '3.9', '4', '5', 'HG5', '7.3'],
['Some3', '4', '5', '6.1', 'H2D', '8.9']]
Каждый элемент каждого подсписка является строкой, но я хотел бы, чтобы включить все чисто числовые строки в поплавков.
Так что попробуйте следующий код:
for row in my_list:
for k, item in enumerate(row):
if k in (1, 2, 3, 5):
item = float(item)
К сожалению, вложенный список остается неизменным. Я уверен, что делаю простую ошибку, но я не вижу этого. Любая помощь (и контекст) была бы оценена.
которые будут рассмотрены более вещий в этом случае для цикла или списка понимания, создающего my_list2 как DSM предлагает? Является ли тот или иной предпочтительным? Мои фактические списки могут достигать 100 000 + строк. – donopj2
@PatrickD: Два ответа делают разные вещи. Код в моем ответе изменяет исходный список на месте. Код в ответе DSM создает новый список. Другое отличие состоит в том, что код в моем ответе жестко кодирует, какие столбцы для преобразования, и будет выходить из строя, если какое-то значение не может быть преобразовано. Код в ответе DSM пытается преобразовать каждый элемент и использует значение с плавающей запятой вместо исходного значения, если преобразование завершается успешно. Код в этом ответе быстрее и потребляет меньше памяти, если вы хотите эту семантику. –