Python 避免使用两个数组进行简单的字符串更改
我有一个包含一些json文件名的列表,我想从单词中删除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
我所做的工作是:
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希望避免创建另一个列表,而这正是列表理解的作用!他们创建了另一个列表。如果列表足够大,这可能会改变内存需求。如果只对修改后的值进行一次迭代,则可以使用生成器。