如何在函数中引用列表?

时间:2019-04-11 05:42:10

标签: python

我正在尝试使用for循环来执行此操作:当stack number = 'Stack 1'的西装类型为'Suit A'时,它将运行card_red函数的次数为第一个列表中的第三项(9)

game1 = \
[['Stack 1', 'Suit A', 9, 6],
['Stack 2', 'Suit B', 5, 0]]


def deal_cards():
    if     == 'Stack 1':
        if      == 'Suit A':
            for i in range(     ):
                card_red(stack1_xpos, stack1_ypos)

那我应该在每个“ if”语句之后和range()括号中放什么?

4 个答案:

答案 0 :(得分:2)

似乎您有一个列表列表。使用带有方括号的索引符号可访问列表的各个元素。

def deal_cards():
    if game1[0][0] == 'Stack 1':
        if game1[0][1] == 'Suit A':
            for i in range(game1[0][2]):
                card_red(stack1_xpos, stack1_ypos)

请注意,在每种情况下,我首先使用索引[0]来访问第一个子列表,然后使用第二个索引来访问单个元素。请记住,第一项的索引为0,第二项的索引为1,依此类推。

如果要在每个子列表中重复此操作,则更容易将其作为参数传递给deal_cards

def deal_cards(game):
    if game[0] == 'Stack 1':
        if game[1]== 'Suit A':
            for i in range(game[2]):
                card_red(stack1_xpos, stack1_ypos)


for game in game1:
    deal_cards(game)

现在请注意,该函数中只有单索引访问,而之前只有双索引访问。这是因为game变量在调用时已经拥有一个子列表。

答案 1 :(得分:2)

您可以尝试:

game1 = [['Stack 1', 'Suit A', 9, 6],['Stack 2', 'Suit B', 5, 0]]

def deal_cards():
    if game1[0][0] == "Stack1":
        if game1[0][1] == "Suit A":
            for i in range(game1[0][2]):
                card_red(stack1_xpos, stack1_ypos)

答案 2 :(得分:2)

您可以尝试以下操作:

game1 = \
[['Stack 1', 'Suit A', 9, 6],
['Stack 2', 'Suit B', 5, 0]]


def deal_cards(arr):
    if arr[0] == 'Stack 1':
        if arr[1] == 'Suit A':
            for i in range(arr[2]):
                card_red(stack1_xpos, stack1_ypos)

for game in game1:
    deal_cards(game) # you can call in this way

答案 3 :(得分:1)

您可以使用enumerate遍历项目列表,同时获得项目的位置:

game1 = \
[['Stack 1', 'Suit A', 9, 6],
['Stack 2', 'Suit B', 5, 0]]


def deal_cards():
  for (idx, stack) in enumerate(game1):
    if stack[0] == 'Stack 1':
        if stack[1] == 'Suit A':
            for i in range(stack(2)):
                card_red(idx, 3)

所以您的循环将运行两次,

  • 首先使用idx = 0stack = ['Stack 1', 'Suit A', 9, 6]
  • 然后用idx = 1['Stack 2', 'Suit B', 5, 0]