【问题标题】:How to divide the list and sort in ascending and descending order using python?如何使用python划分列表并按升序和降序排序?
【发布时间】:2023-03-12 15:08:01
【问题描述】:

我有一个 python 列表[1,2,3,4,5,6] 我必须打印[1,2,3,6,5,4]?前半段升序,后半段降序

【问题讨论】:

  • 把大问题分解成小步骤。你能分割(切片)列表吗?你能把列表倒过来吗?

标签: python list slice


【解决方案1】:

尝试得到一半,然后反转:

>>> l=[1,2,3,4,5,6]
>>> l[len(l)//2:]=l[len(l)//2:][::-1]
>>> l
[1, 2, 3, 6, 5, 4]
>>> 

切片+切片+反转。

【讨论】:

  • 它仅适用于排序列表。它不适用于[1,2,3,5,6,4]
【解决方案2】:

通过列表切片:

# mix list up a bit
l =  [3,4,1,2,5,6]
len_l = len(l)

l.sort() # sort it again

# print first half, then last half reversed
print(l[0:len_l//2]+l[len_l:len_l//2-1:-1])

输出:

 [1,2,3,6,5,4]

【讨论】:

    【解决方案3】:
    x = [1,2,3,4,5,6]
    
    a = x[:int(len(x)/2)]
    b = x[int(len(x)/2):]
    
    print(sorted(a) + sorted(b, reverse=True))
    

    【讨论】:

      【解决方案4】:

      你可以这样存档,

      In [24]: mid = len(lst)//2
      
      In [25]: sorted(lst[:mid]) + sorted(lst[mid:],reverse=True)
      Out[25]: [1, 2, 3, 6, 5, 4]
      

      【讨论】:

      • 这不适用于随机排序列表,也不适用于字符串列表。
      • @U9-Forward 可以举个小例子解释一下吗?
      • 最好使用 len(lst)//2
      【解决方案5】:
      l=[1,2,3,6,5,4] 
      l[0:int(len(l)/2)]+sorted(l[-int(len(l)/2):],reverse=True)
      

      输出

      [1, 2, 3, 6, 5, 4]
      

      【讨论】:

        【解决方案6】:

        只使用长度切片列表然后对其进行排序

        list=[1,2,3,4,5,6]
        middle = len(list)//2
        print(sorted(list[:middle])+sorted(list[middle:],reverse=True))
        

        【讨论】:

          猜你喜欢
          • 2018-11-20
          • 2011-08-25
          • 2016-10-18
          • 2020-11-09
          • 1970-01-01
          • 2012-11-08
          • 2023-03-07
          • 2018-05-03
          相关资源
          最近更新 更多