Я новичок в python, я отредактирую и проясню :) спасибо, что потратили свое время.
У меня есть два разных списка со строковыми значениями (как показано ниже):
Список из 1600 действительных чисел: ['-1,03E+01' '-1,26E+01' .......]
Другой список с 1600 мнимыми значениями: [ '-1,25E+01' '-1,02E+01' .... ]
Они напрямую импортируются из файла пробного камня. поэтому я не вижу букву j для воображаемого. я не знаю ю.
«Примечание: все являются str». Тогда, пожалуйста, задайте вопрос редактировать, чтобы привести пример точный. Не заставляйте людей гадать, что там есть, а чего нет на самом деле.
Пожалуйста, найдите время, чтобы правильно отформатировать код. Используйте форматирование кода и обязательно указывайте допустимые литералы. ['-1,03E+01' '-1,26E+01' .......]
ничего не значит, и ['-1,03E+01' '-1,26E+01']
, скорее всего, не тот список, который вы планировали.
ладно проверю и попробую ваш метод
Поскольку вы отредактировали свой вопрос, чтобы сказать, что ваши числа на самом деле представлены строками значений с плавающей запятой (хотя ваш второй список вашего второго примера [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() не может принимать второй аргумент, если первый является строкой
По этой причине все было запутанным, потому что значения str имеют запятые для чисел. Проблема заключалась в том, что региональный формат на моем ПК находится в Германии, поэтому он также импортируется как таковой. Так что изменил региональный формат, и это сработало. В Германии для чисел мы используем ',' вместо '.' например 1.000 за 1000 и 140,0 за 140.0. Ответ: [complex(a,b) for a, b in zip(l1, l2)] . Это сработало для меня. Спасибо:)
@KV Спасибо, что приняли ответ. Все это было немного запутанно, но я думаю, что мы в основном разобрались. Почему это сработало без того, чтобы они были брошены в поплавки? Я думал, это струны?
@MisterMiyagi Ак, я понимаю, что ты имеешь в виду. Я думаю, что это проблема локали.
Я не понимаю, как первое описание значений относится к примеру. Что вы имеете в виду под «-1,03E+01», «-1,26E+01» и «-1,25E+01», «-1,02E+01»? Есть ли у первого значения настоящий (описание) или целое число (пример)? Есть ли у второго значения тип ул или сложный тип?