如何在每个第n个索引的列表中放置一个字符串?

时间:2016-10-09 01:56:46

标签: python list python-3.x join

我正在开发一个函数,它将套装和值作为另一个函数列表中的字符串获取:

def getCard(n):
    deckListSuit = []
    grabSuit = getSuit(n)
    n = (n-1) % 13 + 1
    if n == 1:
        deckListSuit.append("Ace")
        return deckListSuit + grabSuit
    if 2 <= n <= 10:
        deckListSuit.append(str(n))
        return deckListSuit + grabSuit
    if n == 11:
        deckListSuit.append("Jack")
        return deckListSuit + grabSuit
    if n == 12:
        deckListSuit.append("Queen")
        return deckListSuit + grabSuit
    if n == 13:
        deckListSuit.append("King")
        return deckListSuit + grabSuit

使用新功能,它将从上面的函数中获取信息并将其返回到具有某种结构“VALUE of SUIT”的列表中。

所以说如果你有“3”,“黑桃”它会返回“3个黑桃”。

到目前为止,这是我在新功能上的代码。

def getHand(myList):
    hand = []
    for n in myList:
        hand += getCard(n)
    return [(" of ".join(hand[:2]))] + [(" of ".join(hand[2:4]))] + [(" of ".join(hand[4:6]))] + [(" of ".join(hand[6:8]))] + [(" of ".join(hand[8:10]))]

我的问题是,如何在价值和套装之间插入“of”而不必做几百万次?

2 个答案:

答案 0 :(得分:2)

您可以在for循环

中执行此操作
for n in myList:
    hand += [" of ".join(getCard(n))]

return hand

您也可以在getCard中执行此操作并返回'3 of Spades'

BTW:你可以把它作为列表上的元组

hand = [ ("3", "Spades"), ("Queen", "Spades"), ... ]

然后您可以使用for循环代替切片[:2][2:4]

new_list = []
for card in hand: 
    # in `card` you have ("3", "Spades")
    new_list.append(' of '.join(card))

return new_list

答案 1 :(得分:0)

如果你使用元组列表,你可以使用格式和列表理解

test_hand = [("3","space"),("4","old")]
return ["{} of {}".format(i,z) for i,z in (test_hand)]

输出:

 ['3 of space', '4 of old']