有人可以帮我创建一个python程序,将未排序的列表分成2个组,按字母顺序排列在两个组中。然后程序应该按照字母顺序创建一个新列表,方法是从正确的对中取出下一个最大的字母。请不要告诉我以不同的方式执行此操作,因为我的方法必须如上所述进行。谢谢:))
$group
答案 0 :(得分:0)
如果我理解正确,您正试图将unsorted
转换为以下列表:
['D', 'G', 'F', 'H']
如果是这种情况,我修改了你的代码,以便产生正确的输出。
unsorted = ['B', 'D', 'A', 'G', 'F', 'E', 'H', 'C']
n = 4
num = float(len(unsorted))/n
l = [ unsorted [i:i + int(num)] for i in range(0, (n-1)*int(num), int(num))]
l.append(unsorted[(n-1)*int(num):])
# This part has been added in. It sorts each sublist,
# then takes the second element (the character further along the alphabet)
for i in range(len(l)):
l[i] = sorted(l[i])[1]
print(l)
答案 1 :(得分:0)
假设您正在寻找a = ['B', 'D', 'A', 'G', 'F', 'E', 'H', 'C']
,我认为以下代码与您的相似,但更清晰一点:
a[i:i+2]
使用列表推导迭代列表sorted(list,reverse=True)
中的项目对,并使用groups = [ sorted(a[i:i+2],reverse=True) for i in range(0,len(a),2)]
以反向字母顺序对每对中的项目进行排序:
result = [i[0] for i in groups]
迭代已排序的组,选择一对中的第一项
{{1}}