【问题标题】:List not being sorted by BubbleSort列表未按 BubbleSort 排序
【发布时间】:2017-05-16 21:03:38
【问题描述】:

有一个冒泡排序程序,我希望将电子邮件按字母顺序排序。但是,当我使用要排序的 List 运行程序时,我收到错误 TypeError: 'tuple' object does not support item assignment。 代码如下:

def BubbleSort(logindata):
    NoSwaps = 1
    N = len(logindata)
    while NoSwaps == 1:
        Count = 1
        NoSwaps = 0
        for Count in range(N-1):
            if logindata[Count] > logindata[Count+1]:
                temp = logindata[Count]
                logindata[Count] = logindata[Count+1]
                logindata[Count+1]=temp
                NoSwaps=1
    return logindata

if __name__ == "__main__":
    logindata=["tom@gmail.com","Password1"],["Harry","Password2"],["Jake","Password3"]
    BubbleSort(logindata)
    print(logindata)

程序对没有“密码”的列表进行排序。如何让代码运行并成功对其进行排序。

【问题讨论】:

  • 您没有从BubbleSort 函数中捕获返回值。捕获返回值并打印出来。

标签: python list sorting tuples bubble-sort


【解决方案1】:

假设您的冒泡排序算法正常工作,您的问题是您无法在 tuple 中分配项目,当尝试 logindata[count] = logindata[count+1] 时,您可以将 logindata 更改为 list 然后返回 @ 的 tuple 987654326@,另外你应该捕获返回的logindata然后打印它,整个代码如下所示:

def BubbleSort(logindata):
    NoSwaps = 1
    N = len(logindata)
    logindata = list(logindata)
    while NoSwaps == 1:
        Count = 1
        NoSwaps = 0
        for Count in range(N-1):
            if logindata[Count] > logindata[Count+1]:
                temp = logindata[Count]
                logindata[Count] = logindata[Count+1]
                logindata[Count+1]=temp
                NoSwaps=1
    return tuple(logindata)

if __name__ == "__main__":
    logindata=["tom@gmail.com","Password1"],["Harry","Password2"],["Jake","Password3"]
    logindata = BubbleSort(logindata)
    print(logindata)
    #(['Harry', 'Password2'], ['Jake', 'Password3'], ['tom@gmail.com', 'Password1'])

【讨论】:

    【解决方案2】:

    此代码将运行并对列表进行排序。但是我不知道这是否是您想要的方式。

    def BubbleSort(logindata):
        NoSwaps = 1
        N = len(logindata)
    
        while NoSwaps == 1:
            Count = 1
            NoSwaps = 0
    
            for Count in range(N-1):
                if logindata[Count][0] > logindata[Count+1][0]:
                    temp = logindata[Count][0]
                    logindata[Count][0] = logindata[Count+1][0]
                    logindata[Count+1][0] =temp
                    NoSwaps=1
                    temp = logindata[Count][1]
                    logindata[Count][1] = logindata[Count+1][1]
                    logindata[Count+1][1] =temp
        return logindata
    
    if __name__ == "__main__":
        logindata=["Adam","Password1"],["Harry","Password2"],["Cake","Password3"]
        BubbleSort(logindata)
        print(logindata)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-23
      • 2016-02-27
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多