【发布时间】:2014-06-11 23:54:53
【问题描述】:
我试图在每次迭代中一个一个地弹出列表中的所有元素,问题是 Python 只弹出列表的上半部分,我需要它来弹出所有元素。这是我的代码:
cards = ['As', 'Ks', 'Qs', 'Js', '10s', '9s', '8s', '7s', '6s', '5s', '4s', '3s', '2s',\
'Ad', 'Kd', 'Qd', 'Jd', '10d', '9d', '8d', '7d', '6d', '5d', '4d', '3d', '2d',\
'Ac', 'Kc', 'Qc', 'Jc', '10c', '9c', '8c', '7c', '6c', '5c', '4c', '3c', '2c',\
'Ah', 'Kh', 'Qh', 'Jh', '10h', '9h', '8h', '7h', '6h', '5h', '4h', '3h', '2h']
#itertools.combinations returns a tuple and we store it in tupOnePlayerAllCombos
tupOnePlayerAllCombos = itertools.combinations(cards, 2)
#We need to convert out tuple to a list in order for us to use the replace() methos, tuples do not have such a method
lstOnePlayerAllCombos = list(tupOnePlayerAllCombos)
#There are characters we need to delete from each list item, we will store each edited list item in this list
lstEditedOnePlayerAllCombos = []
#replace all useless characters in every list item ( ' and ( and ) and , )
for lstOnePlayerAllCombo in lstOnePlayerAllCombos:
lstOnePlayerAllCombo = str(lstOnePlayerAllCombo).replace("'","").replace("(","").replace(")","").replace(", ","")
#Add edited list item to our new list
lstEditedOnePlayerAllCombos.append(lstOnePlayerAllCombo)
lstEditedOnePlayerAllCombos2 = lstEditedOnePlayerAllCombos
#For every list item in our combination list
for lstEditedOnePlayerAllCombo in lstEditedOnePlayerAllCombos:
#We need to delete the current list item from the list, so that we dont get duplicate hands for other players
#so we retrieve the index by searching the list with our current value and store that value as our player1 hand
strPlayerOneHand = lstEditedOnePlayerAllCombos2.pop(lstEditedOnePlayerAllCombos.index(lstEditedOnePlayerAllCombo))
intLength = (len(lstEditedOnePlayerAllCombos2)-1)
#print (lstEditedOnePlayerAllCombos)
print("The current length of the list is " + str(intLength))
【问题讨论】:
-
要清空整个列表吗?
-
这似乎是XY problem。您对
pop和迭代的问题并不是您真正要解决的问题,只是您遇到的障碍。看起来你真正想做的是找到多对卡片,它们之间没有任何重复。如果您需要有关该问题的帮助(而不仅仅是pop问题),您应该添加有关您实际想要迭代的信息(具有给定数量玩家的游戏的手?)。可能有更直接的方法来获得您需要的特定迭代。
标签: python