Discuss / Python / 迭代

迭代

Topic source

七月上行

#1 Created at ... [Delete] [Delete and Lock User]
    if len(L) == 0:
        return (None, None)
    maxm, minm = -1e10, 1e10
    for x in L:
        if maxm < x:
            maxm = x
        if minm > x:
            minm = x
    return (minm, maxm)

默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()。 如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断: 如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:

七月上行

#2 Created at ... [Delete] [Delete and Lock User]

排序 if len(L) == 0: return (None, None) start, end = 0, len(L) def sort(LL): if len(LL) <= 1: return LL mid = len(LL)//2 left = [x for x in LL if x<LL[mid]] middle = [LL[mid]] right = [x for x in LL if x>LL[mid]] return sort(left) + middle + sort(right) return sort(L)[start], sort(L)[end-1]

hancehzq

#3 Created at ... [Delete] [Delete and Lock User]

这种排序会去重,比如 l = [1, 3, 4, 5, 7, 9, 44, 1, 9, 4], 调用 sort(l) 后 变成了 [1, 3, 4, 5, 7, 9, 44]。 下面是不去重的排序算法:

def sort(LL): n = len(LL) if n <= 1: return LL mid = n>>1 middle = LL[mid] repeat = LL.count(middle) left = [x for x in LL if x<middle] right = [x for x in LL if x>middle] return sort(left) + [middle] * repeat + sort(right)


  • 1

Reply