Преобразование номеров str в два разных списка в список комплексных чисел в python 3.8

Я новичок в python, я отредактирую и проясню :) спасибо, что потратили свое время.

У меня есть два разных списка со строковыми значениями (как показано ниже):

  1. Список из 1600 действительных чисел: ['-1,03E+01' '-1,26E+01' .......]

  2. Другой список с 1600 мнимыми значениями: [ '-1,25E+01' '-1,02E+01' .... ]

Они напрямую импортируются из файла пробного камня. поэтому я не вижу букву j для воображаемого. я не знаю ю.

  • Сначала мне нужно изменить тип значения с 'str' на float. для дальнейшего расчета.
  • Затем добавьте их в список как комплексное значение, например [[-1,03E+01 -1,25E+01j] [-1,26E+01-1,02E+01j].......]

Я не понимаю, как первое описание значений относится к примеру. Что вы имеете в виду под «-1,03E+01», «-1,26E+01» и «-1,25E+01», «-1,02E+01»? Есть ли у первого значения настоящий (описание) или целое число (пример)? Есть ли у второго значения тип ул или сложный тип?

MisterMiyagi 16.03.2022 16:13

«Примечание: все являются str». Тогда, пожалуйста, задайте вопрос редактировать, чтобы привести пример точный. Не заставляйте людей гадать, что там есть, а чего нет на самом деле.

MisterMiyagi 16.03.2022 16:18

Пожалуйста, найдите время, чтобы правильно отформатировать код. Используйте форматирование кода и обязательно указывайте допустимые литералы. ['-1,03E+01' '-1,26E+01' .......] ничего не значит, и ['-1,03E+01' '-1,26E+01'], скорее всего, не тот список, который вы планировали.

MisterMiyagi 17.03.2022 09:30

ладно проверю и попробую ваш метод

K V 17.03.2022 09:42
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку вы отредактировали свой вопрос, чтобы сказать, что ваши числа на самом деле представлены строками значений с плавающей запятой (хотя ваш второй список вашего второго примера [7j, 8j, et.c] делает это очень запутанным):

l1 = ['-1,03E+01', '-1,26E+01']

l2 = ['-1,25E+01', '-1,02E+01']

[complex(float(a), float(b)) for a, b in zip(l1, l2)]

Оригинальный ответ:

Для двух списков l1, содержащих действительные значения, и l2, содержащих мнимые ценности (как вы их описываете, но я думаю, вы имеете в виду коэффициенты):

[complex(a,b) for a, b in zip(l1, l2)] 

Этот ответ даст вам список сложных значений:

[(1+7j), (2+8j), (3+9j), (4+10j), (5+11j), (6+12j)]. 

Как вы указали в своем комментарии ниже, если вы хотите, чтобы это было

[ [(1+7j)] [(2+8j)] [(3+9j)] [(4+10j)] [(5+11j)] [(6+12j)] ] 

как указано в вашем вопросе, затем измените его на

[[complex(a, b)] for a, b in zip(l1,l2)]

спасибо за ваш ответ. Я хотел бы добавить еще одну ошибку. мои значения относятся к этому типу -1,02E+01. Но все их значения имеют тип str. поэтому получаю ошибку, чтобы использовать ответ, который вы упоминаете. TypeError: complex() не может принимать второй аргумент, если первый является строкой

K V 16.03.2022 15:54

По этой причине все было запутанным, потому что значения str имеют запятые для чисел. Проблема заключалась в том, что региональный формат на моем ПК находится в Германии, поэтому он также импортируется как таковой. Так что изменил региональный формат, и это сработало. В Германии для чисел мы используем ',' вместо '.' например 1.000 за 1000 и 140,0 за 140.0. Ответ: [complex(a,b) for a, b in zip(l1, l2)] . Это сработало для меня. Спасибо:)

K V 17.03.2022 10:11

@KV Спасибо, что приняли ответ. Все это было немного запутанно, но я думаю, что мы в основном разобрались. Почему это сработало без того, чтобы они были брошены в поплавки? Я думал, это струны?

jonsca 17.03.2022 16:48

@MisterMiyagi Ак, я понимаю, что ты имеешь в виду. Я думаю, что это проблема локали.

jonsca 17.03.2022 16:54
stackoverflow.com/questions/6633523/… будет работать для преобразования с плавающей запятой, если вам были представлены данные в локали с запятой, используемой в качестве десятичной точки, и вы пытаетесь выполнить преобразование в плавающую в другой локали, где десятичная точка представлена ​​точкой.
jonsca 17.03.2022 17:07

Другие вопросы по теме