- 使用print进行打印输出结果正常
- 将结果添加只全局变量data_1再打印时输出异常
def is_equal(data,left,right): #判断left到当前right是否有相等的,如果有说明之前已经对这
for i in range(left,right): #个进行过全排序了
if data[i] == data[right]:
return True
return False
def rank(data, step):
global data_1
if len(data) == step+1:
print(data)
#data_1.append(data)
#问题:这里的data_1最后输出的不是全排列而是一组重复列表
return
else:
for i in range(step, len(data)):
if is_equal(data,step,i): #加一个判断
continue
else:
data[step], data[i] = data[i], data[step]
rank(data, step + 1)
data[step], data[i] = data[i], data[step]
if __name__ == '__main__':
data = list("1223")
data_1=[]
rank(data, 0)
print(data_1)
print输出结果
['1', '2', '2', '3']
['1', '2', '3', '2']
['1', '3', '2', '2']
['2', '1', '2', '3']
['2', '1', '3', '2']
['2', '2', '1', '3']
['2', '2', '3', '1']
['2', '3', '2', '1']
['2', '3', '1', '2']
['3', '2', '2', '1']
['3', '2', '1', '2']
['3', '1', '2', '2']
列表输出结果
[['1', '2', '2', '3'], ['1', '2', '2', '3'], ['1', '2', '2', '3'], ['1', '2', '2', '3'], ['1', '2', '2', '3'], ['1', '2', '2', '3'], ['1', '2', '2', '3'], ['1', '2', '2', '3'], ['1', '2', '2', '3'], ['1', '2', '2', '3'], ['1', '2', '2', '3'], ['1', '2', '2', '3']]