问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python 一个排序的问题

发布网友 发布时间:2022-04-19 13:36

我来回答

4个回答

热心网友 时间:2023-07-01 19:29

题目是不是:

有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)

热心网友 时间:2023-07-01 19:29

#bcd为空, cd为空 , d为空, 都不为空 ,4种情况下生成的排列
results = []
for k1 in a:
results.append(k1)
for k2 in b:
results.append(k1+k2)
for k3 in c:
results.append(k1+k2+k3)
for k4 in d:
results.append(k1+k2+k3+k4)
#去掉重复的
results = list(set(results))

热心网友 时间:2023-07-01 19:30

建议你给一个具体的例子,完全不懂你所谓的有空是什么意思,空格?还是别的什么。 另外,最终结果是一个新词? 还是一个列表,列表中有若干个词。学会正确的提问题是很重要的。

热心网友 时间:2023-07-01 19:30

用个例子说明你的需求
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 压缩包密码忘的了,谁有办法 帮忙翻译一段话 word所有标题编号改成正文 无格式 手机bt5可以破解wifi吗? sql server的解码工具拜托各位大神 助记词错误怎么办? 指环王 精灵语de语法!完整的啊! wordlists是叫课后单词吗? 谁给我写一篇关于英语词汇学论文,500字就可以! PCA和 LDA 的minitab使用,急需,谢谢 宏杰加密软件加密后文件找不到了,网上找了很多方... python gensim怎么用word2vect for the first word,tab lists possible oclHashcat使用求助 wordlists是什么意思 wordlists英文怎麼读? Word List是什么意思? 封了怎么解封对方不是好友可以解封嘛 微信加人,别人不同意的,加不同的人,如果被投诉... 微信和别人聊天有违规行为不被投诉会封号吗? 微信自动同步什么意思? 美团的同城配送在哪里 美团的今日特价在哪里 美团外卖总部位于哪儿 美团余额在哪里 美团客服端在哪里 vivo手机,帐号与同步,是什么意思?微信账号同步 是什么意思?_问一问 美团外卖的创始者是谁创建于哪里 微信上的数据同步什么意思 抖音微信同步是什么意思 微信怎么可以批量添加群里的好友 怎样通过qq群批量加微信好友 电脑上的超大文件怎么传到手机上 手机大文件怎么发到电脑 怎么在电脑和手机之间传输大文件? 怎么在电脑和手机之间传输大文件 手机和电脑之间快速互传大型文件 手机与电脑传文件有几种方法 认为电脑与手机互传文件哪种方法最快? 微信同步联系人开启是什么意思