繁体   English   中英

每次运行相同的代码后得到的输出略有不同

[英]Getting slightly different output every time after running the same code

在这段代码中,每次运行相同的代码时,我都会得到不同的输出。

输入:

s='AABCAAADA'
st=[]
def merge_the_tools(size,k):
    n=int(len(size)/k)
    for i in range(n):
        st.append(size[i*n:(i+1)*n])
    for i in st:
        se=set(i)
        print(''.join(se))
        
print(merge_the_tools(s,3))

第一个输出:

AB
AC
AD
None

另一个输出:

AB
CA
DA
None

另一个输出:

BA
CA
DA
None

像这样我得到不同的输出 谁能告诉为什么会这样。

我想要这个输出:

AB
CA
AD

Python 中的集合是无序和无索引的,如本演示所示 如果你想保持一个特定的顺序,你可以按如下方式对集合进行排序。

print(''.join(sorted(se)))

Python set没有顺序,因此不能保证每次join都会以相同的顺序检索项目。 如果您想保持顺序,请考虑使用listtuple

Python 中的set是无序的数据结构,因此它不保留插入顺序。

您应该改用list 或者您可以sort集合进行sort 但是sort无论如何都会返回一个列表。

使用sorted

s='AABCAAADA'
st=[]
def merge_the_tools(size,k):
    n=int(len(size)/k)
    for i in range(n):
        st.append(size[i*n:(i+1)*n])
    for i in st:
        se=set(i)
        print(''.join(sorted(se)))
        
print(merge_the_tools(s,3))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM