我有一列有一千万个字符串。字符串中的字符需要以某种方式重新排列。你知道吗
原始字符串:AAA01188P001
乱序字符串:188A1A0AP001
现在我运行了一个for循环,它接受每个字符串并重新定位每个字母,但这需要几个小时才能完成。有没有更快的方法来达到这个结果?你知道吗
这是for循环。你知道吗
for i in range(0, len(OrderProduct)):
s = list(OrderProduct['OrderProductId'][i])
a = s[1]
s[1] = s[7]
s[7] = a
a = s[3]
s[3] = s[6]
s[6] = a
a = s[2]
s[2] = s[3]
s[3] = a
a = s[5]
s[5] = s[0]
s[0] = a
OrderProduct['OrderProductId'][i] = ''.join(s)
我用不同的方法做了一些性能测试:
以下是我得到的1000000次洗牌的结果:
基于此,带有硬编码子字符串的格式字符串似乎是最快的。你知道吗
下面是我用来测试的代码:
性能:(由@jezrael添加)
如果逻辑是一致的,你能用切片重建字符串吗?你知道吗
或作为格式字符串:
编辑:+1代表Dave的“”建议。join()列表与串联。你知道吗
如果您只想洗牌字符串(没有特定的逻辑),可以通过以下几种方式进行:
使用字符串工具:
使用内置方法:
使用numpy:
但是,如果需要使用特定的逻辑(例如,将每个元素放置在特定的位置),可以执行以下操作:
输出:
如果这仍然需要很长时间,可以使用多处理。像这样:
相关问题 更多 >
编程相关推荐