Skip to main content
 首页 » 编程设计

python之使用 Python 进行元组和列表操作。缩短元组生成

2025年05月04日11grandyang

在我的家庭作业中真的被这个问题困住了。

一切正常,但是当 p 中有一个空格 (' ') 时。我需要停止创建 can 的过程。

例如,如果我提交:

rankedVote("21 4", [('AB', '132'), ('C D', ''), ('EFG', ''), ('HJ K', '2  1')]) 

我想要:

['C D', 'AB'] 

返回,而不是像现在这样返回[]。

代码如下:

def rankedVote(p,cs): 
    candsplit = zip(*cs) 
    cand = candsplit[0] 
    vote = list(p) 
    ppl = vote 
    can = list(p) 
    for i in range(len(vote)): 
        if ' ' in vote[i-1]: 
            return [] 
        else: 
            vote[i] = int(vote[i]) 
            can[vote[i]-1] = cand[i] 
 
    for i in range(len(vote)): 
        for j in range(len(vote)): 
            if i != j: 
                if vote[i] == vote[j]: 
                    return [] 
    return can 

编辑:

在例子中:

rankedVote("21 4", [('AB', '132'), ('C D', ''), ('EFG', ''), ('HJ K', '2  1')]) 

这意味着第 1 个 AB 变成第 2 个, 第二个 C D 变成第一个, 它应该停止,因为 3rd 不存在。

假设不是 21 4,而是 2143。 这意味着第 3 个 EFG 将是第 4 个, 第 4 个 HJ K 将是第 3 个。

请您参考如下方法:

我会说,代码按照您的指示执行。看下面的代码块:

if ' ' in vote[i-1]: 
            return []