【问题标题】:Re-Arrange rows in two-dimensional arrays without numpy在没有 numpy 的情况下重新排列二维数组中的行
【发布时间】:2021-07-19 09:19:35
【问题描述】:

二维数组中的行根据每行中“*”的个数重新排列。

例子:

我的数组:

[['*', '-', '*', '*', '*', '*'],
 ['*', '-', '-', '*', '-', '-'],
 ['-', '*', '*', '-', '-', '-'],
 ['*', '-', '*', '*', '-', '-'],
 ['-', '-', '*', '*', '*', '*']]

Expected output:

[['*', '-', '*', '*', '*', '*'],
 ['-', '-', '*', '*', '*', '*'],
 ['*', '-', '*', '*', '-', '-'],
 ['*', '-', '-', '*', '-', '-'],
 ['-', '*', '*', '-', '-', '-']]

* 数量最多的行排在最前面,- 数量最少的行排在最后。如果行具有相同数量的*,则保持相对顺序。

【问题讨论】:

  • 由于内部列表中的条目数是恒定的,因此具有最大数量的 * 意味着最少的 - 数量,那么您的意思是什么意思 * 数量最多的行将首先排列,而- 数量最少的行将排在最后。他们似乎是矛盾的

标签: python arrays row


【解决方案1】:

使用适当的键功能排序即可:

array = [['*', '-', '*', '*', '*', '*'],
         ['*', '-', '-', '*', '-', '-'],
         ['-', '*', '*', '-', '-', '-'],
         ['*', '-', '*', '*', '-', '-'],
         ['-', '-', '*', '*', '*', '*']]

array.sort(key=lambda a: a.count('*'), reverse=True)
array
#[['*', '-', '*', '*', '*', '*'],
# ['-', '-', '*', '*', '*', '*'],
# ['*', '-', '*', '*', '-', '-'],
# ['*', '-', '-', '*', '-', '-'],
# ['-', '*', '*', '-', '-', '-']]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-22
    • 2016-12-27
    • 1970-01-01
    • 2020-10-25
    • 2021-11-20
    • 2020-03-11
    • 2023-02-18
    • 2015-09-05
    相关资源
    最近更新 更多