在Python中创建字符串数组的最佳方法是什么?
我对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)]