Python列表和列表项匹配可以改进我的代码/推理吗?

2024-10-01 11:26:11 发布

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

查询级别:初学者

作为学习练习的一部分,我编写了一些代码,必须检查一个字符串(因为它是通过原始输入构建的)是否与任何列表项的开头匹配,以及它是否等于任何列表项。在

wordlist = ['hello', 'bye'] 
handlist = [] 
letter = raw_input('enter letter: ') 
handlist.append(letter) 
hand = "".join(handlist) 
for item in wordlist: 
    if item.startswith(hand): 
        while item.startswith(hand): 
            if hand not in wordlist: 
                letter = raw_input('enter letter: ') 
                handlist.append(letter) 
                hand = "".join(handlist) 
            else: break 
        else: break 
print 'you loose' 

这段代码可以工作,但是如何改进我的代码(以及我的推理/方法)? 我觉得我的IFWHILEFOR语句的嵌套有点过分了。在

编辑 多亏了Dave,我能够大大缩短和优化我的代码。在

^{pr2}$

我很惊讶我原来的代码能工作。。。在


Tags: 代码in列表inputrawifitementer
1条回答
网友
1楼 · 发布于 2024-10-01 11:26:11

{{{cd2>你不需要把cd3}的值连在一起。在

您可以保存第一个raw_input,方法是用hand作为空字符串启动while循环,因为每个字符串都有{}为True。在

最后,我们需要找出最好的方法来查看wordlist中是否有任何项以hand开头。对此,我们可以使用列表理解:

[item for item in wordlist if item.startswith(hand)]

然后检查返回列表的长度是否大于零。在

然而,更好的是,python有the ^{} function,这是非常适合的:如果iterable的任何元素是True,那么它将返回True,因此我们只需为wordlist的每个成员计算startswith()。在

把这些放在一起我们得到:

^{pr2}$

相关问题 更多 >