Python中检查列表是否包含多个元素及魔方打乱序列生成代码的索引判断问题
关于魔方打乱序列代码的问题解答
嘿,我看了你正在写的魔方打乱代码,针对你的两个疑问,我来给你梳理一下:
一、如何检查列表中索引大于0的位置是否存在元素
其实这个需求本质上是判断列表是否至少有2个元素——因为索引从0开始,索引大于0的位置(比如索引1、2...)存在元素的话,列表长度肯定≥2。你可以直接用 len(scramble) >= 2 来做判断。
结合你的代码场景来看,你现在是想在循环里对比新选的动作和上一个加入列表的动作。其实不用通过i-1来索引,因为每次添加元素前,列表的最后一个元素可以直接用scramble[-1]获取,而且先判断列表是否非空(if scramble:)就可以避免索引错误。比如你可以把那段循环逻辑改成这样,会更直观:
while True: chosen = r.choice(moves) if not scramble: # 列表为空,直接选用这个动作 break last_move = scramble[-1] # 满足条件就跳出循环,否则继续选 if chosen != last_move and chosen[0] != last_move[0]: break
这样就不用纠结i对应的索引问题啦。
如果是要检查某个**特定的大于0的索引(比如索引3)**是否存在,同样用长度判断:len(scramble) > 3,确保列表长度足够覆盖这个索引。
二、Python中如何检查列表是否包含多个元素
这个很简单,直接判断列表的长度是否大于1就行:
- 用
len(your_list) > 1:返回True就说明列表有2个及以上元素 - 或者写
len(your_list) >= 2,效果完全一样
举个简单的例子:
single_item_list = ["U"] print(len(single_item_list) > 1) # 输出False,只有1个元素 multi_item_list = ["U", "R"] print(len(multi_item_list) > 1) # 输出True,有多个元素
最后给个小建议(完全不是评判,只是帮你简化代码):你代码里的else: pass可以直接删掉,不影响逻辑还能让代码更简洁。比如最后那段判断可以改成:
if opposites[scramble[15]] != opposites.get(scramble[16]): if opposites[scramble[14]] != opposites.get(scramble[15]): scrambling = False
内容的提问来源于stack exchange,提问作者bbfav360
相关产品推荐
相关产品推荐

