使用Python进行元组和列表操作。切分元组生成sh

2024-10-16 17:21:01 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的家庭作业中我一直在问这个问题。在

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

例如,如果我提交:

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

我想要:

^{pr2}$

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

代码如下:

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')])

这意味着第一个,AB变成了第二个, 第二个变成第一个, 它应该停止,因为第三个不存在。在

假设不是21 4,而是2143。 这意味着第三个是第四个, 第四个是第三个


Tags: inforlenreturnifabrangecs
2条回答

我知道这个问题很老,但我觉得很有趣。在

就像previous answer说你在那之前没有返回列表,你正在返回[]。在

你应该做的是:

if ' ' in vote[i]:
    return can[:i]

另外,既然您似乎知道如何使用zip,那么您也可以这样做:

^{pr2}$

输出:

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

密码是按照你的指示做的。请看下面的代码块:

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

相关问题 更多 >