Python 将相似元素从一个列表移动到另一个列表
简而言之,我试图检测列表中是否有一种元素中的4个,然后将所有4个元素移动到另一个列表中。到目前为止,我已经:Python 将相似元素从一个列表移动到另一个列表,python,list,element,Python,List,Element,简而言之,我试图检测列表中是否有一种元素中的4个,然后将所有4个元素移动到另一个列表中。到目前为止,我已经: human_hand = [4,5,6,4,5,3,4,5,4] discard = [] for i in set(human_hand): if human_hand.count(i) == 4: discard.append(i) print discard 然而,我的问题是,一旦第一个被追加,布尔值就不再被触发。对python来说是个新手,而且很
human_hand = [4,5,6,4,5,3,4,5,4]
discard = []
for i in set(human_hand):
if human_hand.count(i) == 4:
discard.append(i)
print discard
然而,我的问题是,一旦第一个被追加,布尔值就不再被触发。对python来说是个新手,而且很难理解。我也意识到我现在没有其他的说法 您正在迭代一个
集合
集合对象不允许有多个项目,因此如果您有列表[4,5,6,4,5,3,4,5,4]
,则生成的集合将是[3,4,5,6]
。
然后迭代[3,4,5,6]
,因此它只会进入if
语句一次:仅当i==4
时
我不知道您打算在那里做什么,但如果您希望将human_hand
中的所有四个元素附加到discard
中,一种更简单的方法是不在集合上迭代:
for i in human_hand:
if human_hand.count(i) == 4:
discard.append(i)
编辑
如果要追加4次dodiscard
列表,但如果没有4次,则只需通知用户一次,您可以使用:
for i in set(human_hand):
if human_hand.count(i) == 4:
discard.extend([i]*4)
else:
print "There aren't 4 of a kind for the number ", i
这会将列表添加到丢弃列表
[4,4,4,4]
,但如果没有其他4个数字项,则只需注意一次。当调用集合中的i(人手)时,您正在对集合进行迭代,因此每个数字只表示一次。如果您想在原始版本中每次出现4时都追加,只需在手动i上迭代
Ok cool。这让我更亲近了。但是,如果我添加一个else语句,并沿着“younothave4ofa-kind”这一行,它将触发每个我没有4ofa-kind的值。所以,现在我有我所有的4在“放弃”,但它也打印“没有4的一种”5倍。我应该在我的else声明中添加什么?我想要的是,如果有4个相同类型的值,那么我想要附加这些值,如果没有,那么我想要else语句触发。我不应该执行for循环,然后只执行IF语句吗?问题是,我不想让它说,如果每个数都有4个相同类型的值。我只是想看看我的名单。看看我有没有4个不同的元素。如果有,那么我想附加这4个类型来丢弃。如果没有,那么我希望它继续阅读下面的代码。这可能有助于了解我正在通过编写Go Fish纸牌游戏来练习编程。然后只需删除else
部分,代码就会完全满足您的要求!:)令人惊叹的。非常感谢。我的印象是,每个if语句都必须有一个else语句。