将代码从 perl 转换为 python 以进行 table 处理

convert code from perl to python for table handling

我在 perl 中有这段代码,它允许我创建一个 8 比 1 的列表并创建一个编号 table。 通过在“后缀”1 之前添加到列表数据(即 8 到 1)来填充数组。即在数组内部我们将有 numrotation [1.8, 1.7, 1.6, 1.5, 1.4, 1.3, 1.2, 1.1]。然后用 1 ..1515.1 15.2 15.316..32

的值填充数组

我想知道哪些功能可以代替推送功能。我把代码放在 perl 中,我的测试放在 python 中,但没有: perl 中的代码:

for ( reverse( 1 .. 8 ) ) { push @Numerotation, '1.' . $_ }         push
@Numerotation, ( 1 .. 15, 15.1, 15.2, 15.3, 16 .. 31, 34 .. 45 );

python 中的代码(不起作用):

import numpy as np 

lst = list(range(1,8+1)) 
lst.reverse() 
print(lst) 
numerotation= np.array()

for i in lst :      
    d=1.+i
    numerotation.append(d) 

print(numerotation)

由于您使用的是 numpy,因此您不能像使用常规 Python 列表那样直接在数组上追加。相反,您需要使用 class 函数 append(). Also since np.array() 需要输入 您需要使用 np.empty(0) 来创建一个空数组。

import numpy as np

lst = list(range(1, 8+1))
lst.reverse()
print(lst)
numerotation = np.empty(0)

for i in lst :
    d = "1." + str(i)
    numerotation = np.append(numerotation, d)

print(numerotation)

在您的 Perl 代码中,您将浮点数创建为字符串,因此在本示例中我将它们保留为字符串形式。要使它们成为数字,您需要使用 float(d).

转换它们

这是另一种方法,它使用常规 Python 列表,然后从中创建一个 numpy 数组。

import numpy as np

lst = list(range(1, 8+1))
lst.reverse()
print(lst)
numbers = ["1." + str(i) for i in lst]

numerotation = np.array(numbers)

print(numerotation)