首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据编号将列表排序为列表

问根据编号将列表排序为列表
EN

Stack Overflow用户
提问于 2022-07-15 16:23:03
回答 2查看 46关注 0票数 0

所以,我想知道如何对这个列表进行排序:

代码语言:javascript
复制
list = [
    '1',
    'China',
    'hello',
    '2',
    'India',
    '3',
    'America',
    'Texas',
    'Cowboy'
]

列入这份新的清单:

代码语言:javascript
复制
newlist = [
    ['1', 'China', 'hello'], 
    ['2', 'India'], 
    ['3', 'America', 'Texas', 'Cowboy']
]

所以我找到了解决我自己问题的方法,就是这样的代码:

代码语言:javascript
复制
list = [
    '1',
    'China',
    'hello',
    '2',
    'India',
    '3',
    'America',
    'Texas',
    'Cowboy'
]

newlist = []
a = 1
n = 0

for i in list:
    rltvList = list[n]
    
    if str(a) == rltvList:
        temporaryList = []
        a += 1
        newlist.append(temporaryList)
        
    temporaryList.append(rltvList)
    n += 1

原谅我丑陋的代码,因为我是初学者。

最好的做法是先写伪码,然后才能真正钻研这些代码。

以下是我的伪代码逻辑,供你们中的任何人使用:

list;

  • If

  • 通过list /循环遍历list.

list[x] = '1',然后将list[x]附加到temporaryList,直到list[x] = '2';

  • Append temporaryList一次又一次地到newList;

  • Clear out temporaryList;

  • Do,直到list.

结束

我们需要temporaryList,因为我们需要建立列表的list。如果没有temporaryList,它将只是一个列表。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-15 16:31:12

已完成:

代码语言:javascript
复制
flat = ['1','China','hello','2','India','3','America','Texas','Cowboy']
target = []
n = 1
for i in flat:
    if i == str(n):
        target.append([i])
        n += 1
    else:
        target[-1].append(i)

print(target)

输出:

代码语言:javascript
复制
[['1', 'China', 'hello'], ['2', 'India'], ['3', 'America', 'Texas', 'Cowboy']]
票数 2
EN

Stack Overflow用户

发布于 2022-07-15 18:04:36

更新现有代码,因为如果列表以“5000”开头,它将无法工作并发出错误消息。所以我们要试一试&除了。

以下是新代码:

代码语言:javascript
复制
list= ['4000','this','text','will','be','skipped','1','China','hello','2','India','3','America','Texas','Cowboy']
newlist=[]
a=1
n=0

for i in list:
    rltvList= list[n]
    
    if str(a) == rltvList:
        temporaryList=[]
        a+=1
        newlist.append(temporaryList)
    
    try:    
        temporaryList.append(rltvList)
    except Exception:
        pass
    
    n+=1

print(newlist)

它将输出:

代码语言:javascript
复制
newlist=[['1', 'China', 'hello'],['2', 'India'],['3', 'America', 'Texas', 'Cowboy']]

抱歉,我是个初学者。您可以随意分享一些更简单、更优雅的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72996995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档