Несмотря на то, что я понятия не имею, почему вы хотите это сделать, вы можете использовать RegExes для этого легко. У:
import re
Z3N = re.sub(r"\b(?<!\.)(\d+)(?!\.)\b", r"\1.0", Z3N)
Если вы не хотите, чтобы соответствовать индексы списка используйте этот Regex:
\b(?<!\.|\[)(\d+)(?!\.|\])\b
EDIT: Добавлено объяснение.
(\d+)
соответствует любому количеству цифр, т. Е. Любому целому числу, и фиксирует его для последующего использования.
(?<!\.|\[)
называют отрицательным просмотра назад, это означает, что целое число не должно предшествовать либо точка или открытия квадратной скобки, тем самым исключая любые индексы и цифры, которые уже являются частью поплавка, т.е. .0
. \b
называется границей слов и mathches, где слово «слово» и «не-слова» «switch», поскольку цифры считаются символами слов, это исключает числа, которые являются частью идентификатора.
(?!\.|\[)
- это негативный взгляд и, в основном, то же самое, что и внешний вид, он не соответствует цифрам, которые выполняются точками или закрывающимися брекетами, тем самым исключая индексы и плавающие снова.
Последнее \b
гарантирует, что число, являющееся первым символом идентификатора, не заменяется по причине, описанной выше.
EDIT: Дополнительные пояснения.
\1.0
- это замена, которая означает, что каждое соответствие заменяется этой строкой. \1
заменяется содержимым первой группы захвата, которая является целым числом. Это означает, что в качестве замены вы получаете исходное целое число с добавленным .0
, делая поплавок из целого числа.
И да, r
лечит каждый символ буквально. \
внутри RegEx не заменяются другими символами, а являются буквальными. Однако механизм RegEx придает им особое значение.
Почему вы это делаете? – bozdoz
Не задействовано деление. Какая разница? – thefourtheye
Я предполагаю, что вы хотите исключить целые числа '1',' 5' и '4', потому что индексы индексов должны быть целыми, а не плавать? – DSM