Python 避免使用两个数组进行简单的字符串更改

Python 避免使用两个数组进行简单的字符串更改,python,Python,我有一个包含一些json文件名的列表,我想从单词中删除.json 我所做的工作是: jsonlist = ['foo.json', 'bar.json'] jsonlist_parsed = [] for i in jsonlist: x = i.replace(".json", "") jsonlist_parsed.append(x) jsonlist\u parsed向我打印所需的解决方案,['foo','bar'] 有没有办法避免使用两个数组而只在jsonlist数组中

我有一个包含一些json文件名的列表,我想从单词中删除
.json

我所做的工作是:

jsonlist = ['foo.json', 'bar.json']
jsonlist_parsed = []
for i in jsonlist:
    x = i.replace(".json", "")
    jsonlist_parsed.append(x)
jsonlist\u parsed
向我打印所需的解决方案,
['foo','bar']

有没有办法避免使用两个数组而只在
jsonlist
数组中进行更改


提前感谢

您可以使用列表理解,如下所示

jsonlist = ['foo.json', 'bar.json']
print [item.replace(".json", "") for item in jsonlist]
# ['foo', 'bar']

您可以使用列表理解,如下所示

jsonlist = ['foo.json', 'bar.json']
print [item.replace(".json", "") for item in jsonlist]
# ['foo', 'bar']
我不认为它更快,但它更容易对眼睛,ftw

编辑:@thefourtheye,当我打开这个lol时,答案不在那里

我不认为它更快,但它更容易对眼睛,ftw


编辑:@thefourtheye,当我打开这个lol时,这个答案不在那里。

事实上,我认为正确的解决方案应该是:

for pos, i in enumerate(jsonlist):
    jsonlist[pos] = i.replace(".json", "")

因为如果你使用列表理解,你正在“动态”创建另一个列表。不是吗?

事实上,我认为合适的解决方案是:

for pos, i in enumerate(jsonlist):
    jsonlist[pos] = i.replace(".json", "")

因为如果你使用列表理解,你正在“动态”创建另一个列表。不是吗?

只要有可能,就更喜欢理解。这是非常有效的
jsonlist=列表理解超过jsonlist
。就这样。旧列表已准备好进行垃圾收集(除非其他变量引用它)。我不是说列表理解速度慢,但我知道@Borja希望避免创建另一个列表,而这正是列表理解的作用!他们创建了另一个列表。如果列表足够大,这可能会改变内存需求。如果只对修改后的值进行一次迭代,则可以使用生成器。尽可能选择理解。这是非常有效的
jsonlist=列表理解超过jsonlist
。就这样。旧列表已准备好进行垃圾收集(除非其他变量引用它)。我不是说列表理解速度慢,但我知道@Borja希望避免创建另一个列表,而这正是列表理解的作用!他们创建了另一个列表。如果列表足够大,这可能会改变内存需求。如果只对修改后的值进行一次迭代,则可以使用生成器。