【问题标题】:Determining if a Part of a string is in a List确定字符串的一部分是否在列表中
【发布时间】:2013-05-08 18:41:27
【问题描述】:

给定输入

Guess='1 5K'

还有一个列表

playable=['AC','QS','5S','5K','KC']

我将如何确定 Guess 的“5K”部分是否可以播放?此外,如果它是可玩的,我将如何确定它左侧的项目 1 位置是否包含“5”或“K”。所以可玩性会变成

playable=['AC','QS','5K','KC']

用“5K”代替“5S”。 到目前为止我有

def oneC(Guess):
    split_em=Guess.split() ##splits at space
    card_guess=split_em[1] ##gets the '5K' part of string
    if card_guess is in playable:
                                          ##Confusion Area
        index1=playable.index(card_guess) ##Finds index of '5K'
        index_delete= del playable[index1-1] ##Deletes item to the left of '5K'

我现在的问题是我不确定如何确定“5”或“K”是否在左侧一个位置的项目中。有没有办法将 '5K' 变成一组 ('5','K') 然后将元素向左转到 ('5','S') 并在它们上运行交集?我在手机上写了这篇文章,因为我家的互联网中断了,对于任何混淆或拼写错误,我深表歉意。感谢您的宝贵时间!

【问题讨论】:

  • 我不明白你想要完成什么。您的目标似乎是删除Guess 指定的项目左侧;正确的?看起来这个规范中的顺序很重要,所以构建集合没有意义。这意味着“5K”的处理方式与“K5”一样。你想要那个吗? (你的代码看起来像扑克牌。)

标签: python python-3.x indexing set


【解决方案1】:

您可以遍历左侧项目中的字符,看看里面是 '5' 还是 'K':

index1 = playable.index(card_guess)
if any(c in playable[index1 - 1] for c in card_guess):
    del playable[index1]

请注意,上面的代码不会检查index1 == 0 的情况,因此您必须定义当猜测的卡片是列表中的第一张卡片时会发生什么。

所以要回答你的问题:for c in card_guess 遍历"5K" 中的字符(即'5''K',然后检查其中是否有任何字符在playable[index1 - 1] 中,这是"5K" 的左侧)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2021-10-26
    • 1970-01-01
    • 2013-04-21
    • 2022-01-15
    • 1970-01-01
    • 2020-12-24
    相关资源
    最近更新 更多