您的位置:

求助python中一个排序问题(python中排序的用法)

本文目录一览:

求助python中一个排序问题!

lines  = [x for x in open('/tmp/test.txt',r)]

lines.sort()

print lines

让程序自动排序即可

python 一个排序的问题

题目是不是:

有ABCD四个列表,每个列表有不同的元素(理解为字母);

每次从四个列表里面pop第一个元素组成一个单词作为新列表(输出的列表)的元素;

pop完之后要判断:

D列表长度可以为0

C列表长度可以为0,当D列表长度为0

B列表长度可以为0,当C列表长度为0

A列表长度可以为0,当B列表长度为0

如果有异常(不符合上述条件),组成的单词要追回(remove)。

输出包含新生成单词的列表。

另外要注意异常:

当输入的四个列表已经有长度为0的情况

当第一次pop之后,有列表长度为0的情况

def GenerateRndList():

    "Call ListFactory and check whether the list is empty. If it is, repeat ListFactory."

    while 1:

        list = ListFactory()

        if len(list)  0:

            return list

def ListFactory():

    "Generate list"

    from random import randint

    List = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']

    tmpID = randint(0,len(List)) # how many elements require to be removed

    for i in range(tmpID):

        List.pop(randint(0, (len(List) - 1)))

    return List

def AddWord(character_list, debug = False):

    "Add word to output list"

    global WORD_LIST

    word = ''

    for i in character_list:

        word += i

    if debug is True:

        print 'Combined - ', word

    WORD_LIST.append(word)

def RemoveWord(debug = False):

    "Remove final word to output list"

    global WORD_LIST

    if debug is True:

        print 'Remove - ', WORD_LIST[-1]

    WORD_LIST.pop()

def Outputter():

    print WORD_LIST

def WordVerifier(word):

    "Send out word to one web site to verify whether word is meaningful."

    pass

def  ListVerifier(input_list):

    "Check whether length of list items matches the requirement"

    global ProcessFlag

    # Prepare a flag list, whose element is 1 or 0.

    original_length_list = []

    for i in range(len(input_list)):

        if len(input_list[i]) == 0:

            original_length_list.append(0)

        if len(input_list[i]) = 1:

            original_length_list.append(1)

    '''

    Compare whether the list is same after sorted,

        - if same, rule is matched;

        - if not, rule is NOT matched.

    '''

    compare_length_list = original_length_list[:]

    compare_length_list.sort()

    compare_length_list.reverse()

    if str(compare_length_list) != str(original_length_list):

        RemoveWord() # at this time, state maybe [01][01][01]1

        ProcessFlag = False

    elif original_length_list.count(0)  0:

        ProcessFlag = False

def Callback(input_list,  Callback_Support_Function):

    "Generate new word"

    while 1:

        new_word = []

        for i in range(len(input_list)):

            new_word.append(input_list[i].pop(0))

        AddWord(new_word)

        Callback_Support_Function(input_list)

        if ProcessFlag is False:

            break

def main(list_number = 4):

    INPUT = []

    for i in range(list_number):

        INPUT.append(GenerateRndList())

    print 'Generated lists are,'

    for i in INPUT:

        print '\t', i

    Callback(INPUT, ListVerifier)

    Outputter()

    # WordVerifier(word)

if __name__ == '__main__':

    global WORD_LIST, ProcessFlag

    WORD_LIST = []

    ProcessFlag = True

    main(list_number = 4)

Python学习小技巧之列表项的排序

Python学习小技巧之列表项的排序

本文介绍的是关于Python列表项排序的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:

典型代码1:

data_list = [6, 9, 1, 3, 0, 10, 100, -100]

data_list.sort()

print(data_list)

输出1:

[-100, 0, 1, 3, 6, 9, 10, 100]

典型代码2:

data_list = [6, 9, 1, 3, 0, 10, 100, -100]

data_list_copy = sorted(data_list)

print(data_list)

print(data_list_copy)

输出2:

[6, 9, 1, 3, 0, 10, 100, -100]

[-100, 0, 1, 3, 6, 9, 10, 100]

应用场景

需要对列表中的项进行排序时使用。其中典型代码1是使用的列表自身的一个排序方法sort,这个方法自动按照升序排序,并且是原地排序,被排序的列表本身会被修改;典型代码2是调用的内置函数sort,会产生一个新的经过排序后的列表对象,原列表不受影响。这两种方式接受的参数几乎是一样的,他们都接受一个key参数,这个参数用来指定用对象的哪一部分为排序的依据:

data_list = [(0, 100), (77, 34), (55, 97)]

data_list.sort(key=lambda x: x[1]) # 我们想要基于列表项的第二个数进行排序

print(data_list)

[(77, 34), (55, 97), (0, 100)]

另外一个经常使用的参数是reverse,用来指定是否按照倒序排序,默认为False:

data_list = [(0, 100), (77, 34), (55, 97)]

data_list.sort(key=lambda x: x[1], reverse=True) # 我们想要基于列表项的第二个数进行排序,并倒序

print(data_list)

[(0, 100), (55, 97), (77, 34)]

带来的好处

1. 内置的排序方法,执行效率高,表达能力强,使代码更加紧凑,已读

2. 灵活的参数,用于指定排序的基准,比在类似于Java的语言中需要写一个comparator要方便很多

其它说明

1. sorted内置函数比列表的sort方法要适用范围更广泛,它可以对除列表之外的可迭代数据结构进行排序;

2. list内置的sort方法,属于原地排序,理论上能够节省内存的消耗;

总结

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助

python 中 set 的排序问题?

set 本身根据定义就是无序的,具体的输出顺序跟实现相关。

方法1 为什么是有序的你可以认为这是一个实现的巧合,实际代码中不应该依赖这个特性(因为别的实现可能不一致,甚至 Python 官方的时候随着版本都有可能变化)。