在Python中创建字符串数组的最佳方法是什么?

62 投票
11 回答
492786 浏览
提问于 2025-04-16 19:43

我对Python和它的库还比较陌生,想知道怎么创建一个固定大小的字符串数组。在Java里这很简单,但我不知道在Python里该怎么做。

到目前为止,我能想到的就是

strs = ['']*size

但是当我尝试在这个数组上调用字符串方法时,调试器给我报错,提示说“X操作在元组对象中不存在”。

如果这是在Java里,我想做的事情是这样的。

String[] ar = new String[size];
Arrays.fill(ar,"");

请帮帮我。

错误代码

    strs[sum-1] = strs[sum-1].strip('\(\)')
AttributeError: 'tuple' object has no attribute 'strip'

问题: 我怎么才能在Python中做我在Java里能做到的事情,同时保持代码的整洁。

11 个回答

9

简单来说,就是“你不需要这样做。”当你需要某个东西有固定长度的时候,说明你可能还在用老办法,或者是在解决一个非常特定的问题,这个问题有自己独特的限制条件。

31

在Python中,通常大家会使用一种可以动态调整大小的列表,也就是说你可以随时往里面添加或删除项目。如果你这样做,就不需要提前分配一个固定大小的集合并用空值填满它。相反,当你获取或创建字符串时,你只需将它们添加到列表中。当需要删除某个值时,只需从列表中移除相应的值就可以了。我想你可能也可以用这种方法来解决你的问题。例如(在Python 2.x的语法中):

>>> temp_list = []
>>> print temp_list
[]
>>> 
>>> temp_list.append("one")
>>> temp_list.append("two")
>>> print temp_list
['one', 'two']
>>> 
>>> temp_list.append("three")
>>> print temp_list
['one', 'two', 'three']
>>> 

当然,有些情况下可能需要更具体的解决方案。在你的情况下,使用一个双端队列(deque)可能是个好主意。你可以查看这里的帖子:Python,强制列表为固定大小。通过这个方法,你可以创建一个固定大小的双端队列。如果在末尾添加一个新值,队列的第一个元素(队头)会被移除,然后将新项目添加到队列中。这可能适合你的需求,但我认为这并不是Python的“常规”做法。

97

在Python中,通常你不会这样做。不过,下面的代码可以实现你想要的效果:

strs = ["" for x in range(size)]

撰写回答