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

if_*_*one 38 python arrays string

我对Python和它的库相对较新,我想知道如何创建一个预设大小的字符串数组.它在java中很容易,但我想知道如何在python中执行此操作.

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

strs = ['']*size
Run Code Online (Sandbox Code Playgroud)

还有一些当我尝试在其上调用字符串方法时,调试器给出了一个错误X对象元组中不存在操作.

如果是在java中,这就是我想要做的.

String[] ar = new String[size];
Arrays.fill(ar,"");
Run Code Online (Sandbox Code Playgroud)

请帮忙.

错误代码

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

问题:如何在保持代码清洁的同时,通过Python在Java中通常可以执行的操作.

Ste*_*ice 63

在python中,你通常不会做你想要做的事情.但是,以下代码将执行此操作:

strs = ["" for x in range(size)]
Run Code Online (Sandbox Code Playgroud)


pse*_*ble 22

在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']
>>> 
Run Code Online (Sandbox Code Playgroud)

当然,某些情况可能需要更具体的内容.在你的情况下,一个好主意可能是使用双端队列.看看这里的帖子:Python,强制列表固定大小.有了这个,你可以创建一个具有固定大小的双端队列.如果将新值附加到末尾,则删除第一个元素(双端队列的头部),并将新项目附加到双端队列.这可能适用于您所需要的,但我不认为这被认为是Python的"标准".


Ale*_*x R 8

简单的答案是,"你没有." 在你需要固定长度的东西的时候,你要么坚持旧习惯,要么用一套独特的约束来写一个非常具体的问题.

  • @if_zero_equals_one:(1)它不会越界,因为你不会通过索引访问它,你将迭代它.(2)列表无论如何都是过度分配(追加是分摊的O(1)!)和`[item]*n`将不会明显快于此(特别是考虑到两者只占整个运行时的一小部分,如果你做任何有趣的事情).如果你以后要更换大部分物品的话,那就完全如此. (3认同)
  • 这是对初学者的建议.在一些情况下,它是一个有效的骰子,可以生成N个项目的列表,并根据指示操作这些项目,而不必担心首先根据需要添加项目.但由于其中一半操纵项目,因此OP的示例(使用不可变字符串)更不实用. (2认同)