【问题标题】:Python, Arranging lists in list without using .sort() [closed]Python,在列表中排列列表而不使用 .sort() [关闭]
【发布时间】:2014-05-17 02:44:00
【问题描述】:

可以这么说

def arrange(Lists, type):
    '''your code'''

鉴于:

Lists = [[['q', 'Leap Strike', 'Jax'],['w', 'Mocking shout', 'Tryndamere']],[['r', 'Ace in hole', 'Caitlyn']...[button, description, name]]]

同时给出:

type can be button, description or name

查找:

arrange(Lists, name)

预期输出:

[['r', 'Ace in hole', 'Caitlyn'],['q', 'Leap Strike', 'Jax'],['w', 'Mocking shout', 'Tryndamere']...]]

我的做法:

def arrange(Lists, type):
    result = []
    for list in lists:
        result += list

当前输出:

[['q', 'Leap Strike', 'Jax'],['w', 'Mocking shout', 'Tryndamere'],['r', 'Ace in hole', 'Caitlyn']...]]

到这里,我将所有列表加入到一个新列表中。下一步是根据列表的类型对列表进行排序。我怎样才能做到这一点?不使用 .sort 或 sorted

【问题讨论】:

  • 家庭作业提醒!向我们提供更多详细信息,以便我们代表您提交。
  • 你能举出输入/输出的例子吗?
  • “排列”是什么意思?应该生产什么订单?
  • 你写过排序函数吗?
  • 感谢 cmets,希望编辑后更清晰。哈哈,这是我的第一篇文章

标签: python list sorting merge


【解决方案1】:
from operator import itemgetter

def arrange(lst, column_name, columns=["number", "code", "name"]):
    item = columns.index(column_name)
    return sorted(lst, key=itemgetter(item))

运行方式

lst = [('C98124', 'book1', 'Shawn'), ('D12345', 'book2', 'James')]

arrange(lst, "name")

然后返回

[('D12345', 'book2', 'James'), ('C98124', 'book1', 'Shawn')]

(正如预期的那样,“Shawn”之前的“James”)

...用适当的操作替换sorted

【讨论】:

    【解决方案2】:
    def my_sort(a_list):
        changes_exist = True
        while changes_exist:
             changes_exist = False
             for i in range(len(a_list)-1):
                 if a_list[i] > a_list[i+1]:
                    a_list = do_swap(a_list,i,i+1)
                    changes_exist = True
        return a_list
    

    可能是最简单的排序算法(将 do_swap 替换为适当的功能)并更改搜索比较以满足您的特定需求

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多