python - 对数组每个元素的特殊操作

标签 python arrays python-3.x

我正在尝试以非常具体的格式写出数据,包括数字、日期、字符串。我的输入是一个包含此数据但不一定采用正确格式的数组。所以我需要对几乎每个元素应用自定义操作。输入和输出具有可变长度。

编辑:这里稍微澄清一下: 我正在解析来自不同格式的不同来源的数据。任务是将它们写成相同的格式。我正在为每个源编写一个默认解析器。没有办法解决这个问题。我正在将数据写入一种格式,其中包含输出的所有必要字段。例如[名称、数据、值、cur1、cur2、...] 现在我需要以一种非常特殊的方式格式化这些数据。例如。在名称中添加一些内容。基本上,我需要根据索引以一种相当独特的方式修改数组中的每个元素。

输入可能看起来像这样:

arr = ['name', 30.09.2019, 20.5, 'EUR', 'USD', ....]
# or
arr = ['name', 30.09.2019]
# or
arr = ['name', '', '', '', '', 'note', '17.5', '',....]

然后我需要对每个元素应用一些函数。 我能想到的唯一解决方案是:

for i in range(0, len(arr)):
   if(i == 0):
      process_zero(arr[i])
   elif(i == 1):
      process_one(arr[i])
   ...

如果它不是可变长度我可以做这样的事情:

process_zero(arr[0])
process_one(arr[1])
...

有没有更好/更干净的方法来做到这一点?

最佳答案

由于数组是可变长度的,所以听起来它并不是一个适合放置数据的结构。制作一个字典或一个类(或对于 Python >=3.7,一个 dataclass )以更结构化的格式包含您的数据。

# With dictionaries
sample = {'name' : 'Jane', 'USD' : 3.50, ... }

def myfunc(data_dict):
    data_dict['name'] = data_dict['name'].upper()
    data_dict['USD'] += 1
    ...

myfunc(sample)

# With classes
class MyClass:
    def __init__(self, name = '', USD = 0, ...):
        self.name = name
        self.USD = USD
        ...

    def myfunc(self):
        self.name = self.name.upper()
        self.USD += 1
        ...

sample = MyClass('Jane', 3.5, ...)
sample.myfunc()

关于python - 对数组每个元素的特殊操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56810769/

相关文章:

python - 慢速 FuncAnimation 脚本

python - 如何获取页面的所有链接?

python - 如何在 python 中获取 selenium chrome web 驱动程序中的状态代码

java - 如何将数组中的所有值向右移动并插入新的第一个值?

javascript - 如何制作具有属性的 JavaScript 数组?

c - 用正确的整数类型替换数组访问变量

python - 如何将 C 库包装在 SWIG 中,它通常在 C 编译期间链接?

python pandas 如何复制有关索引列的列值

python - 使用 Pandas 数据框列中的整数从另一列内的列表中提取特定值

python-3.x - 在 python pandas 中,为什么我不能向 MultiIndex 添加更多级别?