将列表中唯一的元素追加到新列表

2024-06-17 09:01:06 发布

您现在位置:Python中文网/ 问答频道 /正文

  1. 编写一个Python函数sort\u a\u list(s),它接受一个数字或单个字符的列表,并返回一个排序的列表

答。不能使用python函数sort(),但可以使用min()和/或max()

b。如果输入参数包含重复值,则返回仅包含唯一值的列表(注意:大写和小写字符不相同)

c。示例:

一。排序列表([2,-3])->[-[第3、2页]

二。排序列表([2,3,2])->[[第2、3条]

iii.排序列表([2,3,1])->[[第1、2、3页]

iv.排序列表(['z','a'])->;['a','z']

五。排序列表(['H','B'])->;['B','H']

vi.排序列表(['a','B'])->;['B','a']

    if s == []:
        return []

    number_list = []
    letter_list = []
    final_list = []

    if type(s[0])==int:
        my_list = 'numbers'
    else:
        my_list = 'letters'
        i=0
        while i < len(s):
            #convert letters to ascii
            s[i]=ord(s[i])
            i+=1
    if my_list == 'numbers':

        i = 0
        while 0 != len(s):
            #sort the list
            number_list.append(min(s))
            s.remove(min(s))
            i+=1

            j=0
            while j < len(number_list)-1:
                #remove duplicates
                if number_list[j]==number_list[j+1]:
                    number_list.remove(number_list[j+1])
                j+=1
        return number_list

    else:
        #sorts through the letters
        i = 0
        while 0 < len(s):
            #sort the list by ascii value
            letter_list.append(min(s))
            s.remove(min(s))
            #take out the minimum value to get the second lowest etc.
            i+=1

            j=0
            while j < len(letter_list)-1:
                #remove duplicates
                if letter_list[j]==letter_list[j+1]:
                    letter_list.remove(letter_list[j+1])
                j+=1

                while 0<len(letter_list):
                    final_list.append(chr(letter_list[0]))
                    letter_list.remove(letter_list[0])

                    while len(letter_list)!=0:
                        final_list.append(letter_list[0])
                        letter_list.pop()
                        final_list[-1]=chr(final_list[-1])

    return final_list,letter_list[0],len(letter_list)

print(sort_a_list(['a','B','d','K','e']))

我得到一个输出(['B','K','a','d'],101,1)

如何从字母\u列表中提取101,将其从ASCII转换为字符并附加到最终的\u列表中?在尝试了一系列不同的方法之后,我不断地得到类型错误和索引错误


Tags: thegtnumber列表lenif排序min
1条回答
网友
1楼 · 发布于 2024-06-17 09:01:06

我只知道怎么做,没关系

def sort_a_list(s):
    if s == []:
        return []

    number_list = []
    letter_list = []
    final_list = []

    if type(s[0])==int:
        my_list = 'numbers'
    else:
        my_list = 'letters'

    if my_list == 'numbers':

        i = 0
        while 0 != len(s):
            #sort the list
            number_list.append(min(s))
            s.remove(min(s))
            i+=1

            j=0
            while j < len(number_list)-1:
                #remove duplicates
                if number_list[j]==number_list[j+1]:
                    number_list.remove(number_list[j+1])
                j+=1
        return number_list

    else:
        #sorts through the letters
        i = 0
        while 0 < len(s):
            letter_list.append(min(s))
            s.remove(min(s))
            #take out the minimum value to get the second lowest etc.
            i+=1

            j=0
            while j < len(letter_list)-1:
                #remove duplicates
                if letter_list[j]==letter_list[j+1]:
                    letter_list.remove(letter_list[j+1])
                j+=1

    return letter_list

print(sort_a_list(['a','B','d','K','e','e','B']))

相关问题 更多 >