簡體   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