如何解决使用itertools [python]在旧索引处的字符串中插入字符
我在字符串中插入空格。 我交换了字符串。
交换之后,我想放回旧索引处的空格。
我希望通过itertools
实现这一目标。有可能吗?
我之所以使用lambda,是因为我希望以此顺序运行该函数n次。 我也希望稍后再将它们用于其他功能。
我的代码如下:
import itertools
def func(n,strng):
space_delete = lambda temp_var_strng: temp_var_strng.split(" ")
join_char = lambda x: "".join(space_delete(x))
swap_char = lambda s: "".join([join_char(s)[item-n] for item in range(len(join_char(s))) ])
insert_space = lambda insert: list(itertools.chain.from_iterable(zip(itertools.repeat(" "),insert)))
print(swap_char(strng))
如果我的输入是func(4,"hello world")
,swap_char应该在右边将字符串交换4次。
我的swap_char
给了我"orldhellow"
,因此,如果我将所有空格放回旧索引中,它应该在orld和hellow之间。
[' ','o',' ','r','l','d','h','e','w']
但是我的目标是获得:
["orld"," ",hellow]
如果我做这样的嵌套循环,任务就解决了:
for o in lst:
for i in o:
result += s[cnt]
cnt += 1
result += " "
我可以在列表理解中实现这一点,并使用它来代替,我想因为时间效率而采用itertools
解决方案。
提前谢谢。
解决方法
您可以使用numpy解决此问题。
输入:字符串= Hello World; n = 4;
预期输出:orldH elloW
Python代码段:
import numpy as np
# input
n = 4
string = list("Hello World")
string = np.array(string)
# Find the index of space char " "
space_index = np.where(string==' ')[0]
# Remove the space
string = np.delete(string,space_index)
# Rotate the string by n chars
string = np.concatenate((string[-(n):],string[:-(n)]))
# Add the space char to their original positions
string = np.insert(string,space_index,[' '])
print("".join(string))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。