【问题标题】:Comparing lists with conditional statements将列表与条件语句进行比较
【发布时间】:2019-05-17 12:29:34
【问题描述】:

我尝试了一个练习,如果列表按升序排序,它希望我返回 True,否则返回 False。 List1 应该返回 True,List2 应该返回 False。

我尝试创建一个名为 sort 的新变量,以使用 sort 方法对其进行排序并将其与未修改列表进行比较,并使用 for 循环检查已排序列表和未修改列表中的元素是否以相同的顺序相互匹配.我不太确定如何正确解决这个问题,因为我得到了 False 回报。

def is_sorted(t):
    sort = t.sort()
    for element in t:
        if t == sort:
            return True
        else:
            return False

def main():
    list1 = [1,2,2]
    print(is_sorted(list1))
    list2 = ['b', 'a']
    print(is_sorted(list2))

main()

【问题讨论】:

  • for element in t: if t == sort: 没有意义,为什么您需要检查整个列表中的每个项目是否相等一次?另请注意,list.sort就地,它返回None 并改变t

标签: python python-3.x list sorting


【解决方案1】:

list.sort 对列表进行就地排序,并返回None。 来自文档:https://docs.python.org/3/tutorial/datastructures.html

list.sort(key=None, reverse=False)
就地对列表中的项目进行排序

您想使用 sorted 代替它返回一个排序列表

排序(可迭代,*,key=None,reverse=False)
从可迭代的项目中返回一个新的排序列表。

你也可以只比较列表而不是比较每个元素

def is_sorted(t):
    #Sort the list and check if it the same as the original list
    return sorted(t) == t

输出将是

print(is_sorted([1,2,2]))
#True
print(is_sorted(['b', 'a']))
#False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-26
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    相关资源
    最近更新 更多