Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除包含特定元素(卡)的元组_Python_List_Python 3.x_Tuples_Playing Cards - Fatal编程技术网

Python 删除包含特定元素(卡)的元组

Python 删除包含特定元素(卡)的元组,python,list,python-3.x,tuples,playing-cards,Python,List,Python 3.x,Tuples,Playing Cards,假设我有一个卡片列表(元组)。例如: [('H[A],'S[2]),('H[A],'H[3]),('H[A],'H[4])…] H[A]:红桃王牌和黑桃王牌[2]:黑桃王牌 卡片列表代表一对卡片的所有独特组合,你可以从一副10张卡片中取出。我所做的就是列出所有独特的组合,洗牌并从中抽取一个组合(每个组合有一副牌) 我现在要做的是删除那些包含“H[2]”或“S[4]”的对。然后返回一个更新的列表 有什么想法吗?让我知道!非常感谢您的帮助 编辑: -企图- [p for p in cards if

假设我有一个卡片列表(元组)。例如:

[('H[A],'S[2]),('H[A],'H[3]),('H[A],'H[4])…]

H[A]:红桃王牌和黑桃王牌[2]:黑桃王牌

卡片列表代表一对卡片的所有独特组合,你可以从一副10张卡片中取出。我所做的就是列出所有独特的组合,洗牌并从中抽取一个组合(每个组合有一副牌)

我现在要做的是删除那些包含“H[2]”或“S[4]”的对。然后返回一个更新的列表

有什么想法吗?让我知道!非常感谢您的帮助

编辑: -企图-

[p for p in cards if "H[2]" not in p and "S[4]" not in p]
上面的代码返回一个元组列表,其中H[2]和S[4]不存在

有没有一种更优雅的方法来隐式地将H[2]和S[4]传递到列表理解中,而不必显式地声明/声明它们?让我知道

编辑2: -解决-


因此,解决方案是将两个元素“H[2]”和“S[4]”附加到列表j中

j=[j for item in ding for j in item]
j=[j for item in ding for j in item]
注意列表j中的每个元素都是字符串类型。i、 e

j[0] = H[2]
j[1] = S[4]
j[0] = H[2]
j[1] = S[4]
然后我们创建一个列表理解来迭代“cards”列表中的每个元组。当j[0]和j[1]没有出现在元组中时,我们将它们全部附加到一个新列表中

[p for p in cards if j[0] not in p and j[1] not in p]
[p for p in cards if j[0] not in p and j[1] not in p]

假设您正在将列表中的元组组合存储为
my\u list
。您可以使用列表理解来筛选列表,如下所示:

new_list = [card_pair for card_pair in my_list if 'H[2]' not in card_pair and 'S[4]' not in card_pair]

这里的
new\u列表
将包含其中没有
H[2]
S[4]
的所有对。

您可以尝试以下方法:

cards = [(card1, card2) for (card1, card2) in cards if card1 not in ding[0] and card2 not in ding[0]]

因此,解决方案是将两个元素“H[2]”和“S[4]”附加到列表j中

j=[j for item in ding for j in item]
j=[j for item in ding for j in item]
注意列表j中的每个元素都是字符串类型。i、 e

j[0] = H[2]
j[1] = S[4]
j[0] = H[2]
j[1] = S[4]
然后我们创建一个列表理解来迭代“cards”列表中的每个元组。当j[0]和j[1]没有出现在元组中时,我们将它们全部附加到一个新列表中

[p for p in cards if j[0] not in p and j[1] not in p]
[p for p in cards if j[0] not in p and j[1] not in p]

你的尝试在哪里?我的尝试很差,没有包括在这里。不过,我会在回家后立即添加尝试。刚刚添加了我的尝试!任何帮助都会很好。感谢您使用原始完整列表副本中的索引访问更改列表。在第一次删除之后,您将开始获得不正确的索引。当您要从中删除内容的列表长度短于您正在查看的索引后,您将在下次尝试删除时得到一个
索引器。@TigerhawkT3:是的,您是对的。更新了答案
card1
card2
都不在
ding
中,因为
ding
持有元组,而
card1
card2
是这些元组的元素。例如,[('H[2]','S[4]]]
中的
'H[2]'是
False
。因此,我认为这里的总体思路是访问元素'H[2]'和'S[4]'。然后遍历卡片列表,检查这些元素是否存在。如果他们这样做了,就移除/删除元组。因此,他只需要签入
ding[0]