あなたは実際には非常に近いです。唯一の問題は、リストではなくタプルを返すことです。(なんであれa
とb
は、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
(何でも文字列表現に変換する関数) を隠しているという事実に加えて、扱っているのはリストではなく文字列であることも強く示唆しています。