0

1 つのパラメーター (リスト) を受け取る make_ends という名前の関数を作成する必要があります。入力リストの最初と最後の項目を含む新しいリストを返します。

これが私のコードですが、リストに分割されていません。私はこれについてどうするかについて少し混乱しています。.join 機能を使用する必要がありますか? もしそうなら、どうすればいいですか?私は近いと思います。

def make_ends(x):
    return x[0], x[-1]

これは私の以前のビルドですが、元の文字列を返す以外は何もしませんでした:

def go_right(str):
    if str >= 2:
            a = str[-2:0] + str
            return a

それの何が問題だったのですか?

みんな助けてくれてありがとう。

4

6 に答える 6

4

あなたは実際には非常に近いです。唯一の問題は、リストではなくタプルを返すことです。(なんであれabは、a, bこれら 2 つのもののタプルであり、 はそれら 2 つ[a, b]のもののリストです。)

これを解決する 1 つの方法は、呼び出しlistてタプルからリストを作成することです。

def make_ends(x):
    return list((x[0], x[-1]))

しかし、それを行う簡単な方法は、最初にリストを作成することです:

def make_ends(x):
    return [x[0], x[-1]]

次に、別の質問をします。

これは私の以前のビルドですが、元の文字列を返す以外は何もしませんでした:

def go_right(str):
    if str >= 2:
            a = str[-2:0] + str
            return a

これを段階的に見ていきましょう。

まず、str >= 2文字列を数値と比較します。Python 2.x では、すべての文字列がすべての数値よりも大きいか、すべての文字列がすべての数値よりも小さいかのいずれかです。(それは実装に任されています。) したがって、これはあまり有用なチェックではありません。

if len(str) >= 2たぶん、代わりにチェックしたかったのですか?しかし、それでも、それがあなたに何をもたらすかはわかりません。長さが 0 または 1 の場合、何をしたいですか? そのままでは、 が返されますがNone、これはおそらく正しくありません。

一方、str[-2:0]2-before-the-end の後、開始前のすべての要素を要求します。開始前に要素がないため、これは空です。次に、元の値をこの空のコレクションに追加して、元の値を取得します。


また、補足として、パラメーターを呼び出すことstrは悪い考えです。ビルトインstr(何でも文字列表現に変換する関数) を隠しているという事実に加えて、扱っているのはリストではなく文字列であることも強く示唆しています。

于 2013-04-03T21:06:42.083 に答える
1

以下を試してください

def make_ends(x):
  return [x[0], x[-1]]

リストの代わりに現在のフォームでは、タプルを作成しています。これは、値の間に置かれたときにコンマ演算子が行うことです

于 2013-04-03T21:06:43.067 に答える
1

現在、リストではなくタプルを返しています。角括弧で囲むだけでリストになります。

def make_ends(x):
    return [x[0], x[-1]]

ただし、そもそもなぜリストが必要なのか疑問に思います。2 つのアイテムしか返していないことがわかっているので、変更可能である必要はありません。おそらく、ここではタプルが必要なように思えます。

于 2013-04-03T21:07:34.823 に答える
0

あなたはとても近いです。戻り値をリストにキャストするだけです。

return [x[0], x[-1]]
于 2013-04-03T21:06:53.137 に答える
0
def make_ends(x):
  return [x[0], x[-1]]
于 2013-04-03T21:06:59.267 に答える