Python 在不洗牌第一个和最后一个字符的情况下洗牌字符串
我试过:Python 在不洗牌第一个和最后一个字符的情况下洗牌字符串,python,Python,我试过: text="Sample sentence." random.shuffle(text) print(''.join(text)) 但这会改变一切,可能的输出: nmactnpleSSe ee 我想要这样的东西: Smplea ntesence. 只需提取和洗牌位,然后重新组装 import random text = "Sample sentence." text1 = list(text[1:-1]) random.shuffle(
text="Sample sentence."
random.shuffle(text)
print(''.join(text))
但这会改变一切,可能的输出:
nmactnpleSSe ee
我想要这样的东西:
Smplea ntesence.
只需提取和洗牌位,然后重新组装
import random
text = "Sample sentence."
text1 = list(text[1:-1])
random.shuffle(text1)
text2 = text[0] + ''.join(text1) + text[-1]
print(text2)
注意:这回答了关于洗牌除第一个和最后一个字符以外的所有字符的问题。问题中显示的示例似乎是一个特例,每个单词都被单独洗牌。这是一个可能的结果,但不是保证的结果。见下文
import random
text = 'Sample sentence.'
lst = [char for char in text[1:-1]]
random.shuffle(lst)
lst.append(text[-1])
lst.insert(0,text[0])
print(''.join(lst))
你不能洗牌一个字符串-它们是不可变的。因此显示的输出与您发布的代码不对应。
text[0]+'.join(random.shuffle(list(text[1:-1]))+text[-1]
,只要len(text)
大于1。这样做的目的是保持第一位和最后一位,并在这两位之间来回移动。回答你的问题@YossiLevi您的shuffle
返回的不是None
?正确。这一个绝对更好-c=list(文本[1:-1]);随机、随机(c);打印(文本[1]+''.join(c)+text[-1])
。谢谢