【问题标题】:Moving items around in a python list?在 python 列表中移动项目?
【发布时间】:2013-10-27 15:33:54
【问题描述】:

这是最终产品。如果其他人有任何削减它的技巧,请告诉我!非常感谢您的帮助!

def triple_cut(deck):
    ''' (list of int) -> NoneType

    Modify deck by finding the first joker and putting all the cards above it
    to the bottom of deck, and all the cards below the second joker to the top
    of deck. 
    >>> deck = [2, 7, 3, 27, 11, 23, 28, 1, 6, 9, 13, 4]
    >>> triple_cut(deck) 
    >>> deck 
    [1, 6, 9, 13, 4, 27, 11, 23, 28, 2, 7, 3]
    '''     
    joker1 = deck.index(JOKER1)
    joker2 = deck.index(JOKER2)
    first = min(joker1, joker2)
    first_cards = []

    for cards in range(len(deck[:first])):
        cards = 0 
        pop = deck.pop(cards)
        first_cards.append(pop)

    joker1 = deck.index(JOKER1)
    joker2 = deck.index(JOKER2)
    second = max(joker1, joker2)    
    second_cards = []

    for cards in deck[second + 1:]:
        pop = deck.pop(deck.index(cards))
        second_cards.append(pop)

    second_cards.reverse()

    for card in second_cards: 
        deck.insert(0, card)

    deck.extend(first_cards)   

我需要输入更多,因为我的帖子主要是代码:请添加更多详细信息 sss ss

【问题讨论】:

  • 这将是一个很好的例子来学习一些 TDD 顺便说一句。您可以在其中逐步开发代码,然后再进行性能测试。
  • 我敢打赌,你可以用 list slices 做得很好。

标签: python list indexing append


【解决方案1】:

提示:

p = list('abcdefghijkl')
pivot = p.index('g')
q = p[pivot:] + p[:pivot]

列表切片是你的朋友。

【讨论】:

  • 好的,到目前为止我已经这样做了,但现在我的问题是在函数传递后甲板没有被变异:joker1 = deck.index(JOKER1)joker2 = deck.index (JOKER2) ifjoker1
【解决方案2】:

回答第二次修订

函数完成后,不会改变牌组。

问题是你没有给出完整的代码。我猜它看起来像这样:

def triple_cut(deck)
    …
    deck = q

根据您的文档字符串,您将其称为

deck = […]
triple_cut(deck)

并且对分配deck = q 不会传播到triple_cut() 感到困惑。您不能修改方法的形式参数,因此赋值对triple_cut 保持本地化并且影响模块级变量deck

正确的写法是

def triple_cut(cuttable)
    …
    return cuttable[first:] + cuttable[:first]

deck = […]
deck = triple_cut(deck)

为了便于解释,我将参数名称更改为 cuttable 。您可以将参数名称保留为deck,但我想表明,当您认为您正在分配到甲板时,您实际上是在分配给可切割的并且该分配不会执行triple_cut()。

【讨论】:

  • 是的,这是我首先想到的。但是对于分配,这个函数返回 NoneType 所以我不能这样做。我写的代码看起来真的很乱,但如果你想看看它就可以了。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多