1

セットsが与えられた場合、以下のどのセグメントがよりよく見えますか?

if len(s) == 1:
    v = s.copy().pop()
    # important stuff using variable v takes place here

また

if len(s) == 1:
    v = s.pop()
    s.add(v)
    # important stuff using variable v takes place here

また

if len(s) == 1:
    for v in s:
        # important stuff using variable v takes place here

最後のセグメントが最も効率的だと思いますが、実際にはループしないループを使用するのはばかげているように見えませんか?

Python セットに、項目を削除しない pop の代替方法がないのはなぜですか?

これは些細な質問のように思えるかもしれませんが、このシナリオに何度も出くわしたので、引っかき傷が必要になってきました。

4

2 に答える 2

5

Python セットに、項目を削除しない pop の代替方法がないのはなぜですか?

セット構造を変更せずに最初の (そして唯一の) アイテムにアクセスしたい場合は、反復子を使用します。

v = iter(s).next()

これは Python 3 より前で動作します。Python 3 では、組み込みnext関数を使用する必要があります。

v = next(iter(s))
于 2011-05-23T01:17:44.363 に答える
3

このように唯一の要素を割り当てることができますv

(v,) = the_set

the_setアイテムが1つだけ含まれていない場合は、例外が発生します。

于 2011-05-23T01:21:23.780 に答える