3

関数をリストに適用する関数を作成しようとしています。リスト内のすべての単語を大文字にしようとしていますが、うまくいきません。これが私がこれまでに行ったことです:

list = ("hello", "this", "is", "a", "test")

def firstFunction(x):
    return list.upper()

print firstFunction

私が得るエラーは次のとおりです。

<function firstFunction at 0x0000000002352A58>

次に何をすべきか本当に困っています。どんな助けでも大歓迎です。

編集:変更したばかりですが、まだ機能していません:

mylist = ("hello", "this", "is", "james")

def firstFunction(x):
    return may(lambda: x.upper(), mylist)

print firstFunction()
4

6 に答える 6

4

他の答えは素晴らしいですが、Pythonにはすでにmap()という関数があり、必要なことをほぼ正確に実行することに言及したいと思います。

関数を iterable のすべての項目に適用し、結果のリストを返します..... 反復可能な引数は、シーケンスまたは任意の反復可能なオブジェクトです。結果は常にリストです。

したがって、コードは次のようになります

print map(str.upper, lst)

または、タプルが必要な場合は、次のようにします。

print tuple(map(str.upper, lst))

str.upper()は 1 つの引数を受け入れるため、ここでは無名ラムダ関数は必要ありません。この関数型プログラミングがどれほど Pythonic であるかについては議論があると思いますが、個人的には好きな場合もあります。

于 2013-10-25T17:17:19.007 に答える
4

それはエラーではありません。これは、メモリ内の関数のアドレスです。関数を呼び出していないため、表示されています。

全体として、コードには 3 つの問題があります。

  1. 関数を呼び出していません。後に追加する(...)と、これが行われます。
  2. 関数に必要な引数を渡していません。
  3. upperタプルにはメソッドはありません(listこの場合はタプルです)。

以下は、あなたが望むと思うことを行うコードの修正バージョンです。

# Don't name a variable 'list' -- it overshadows the built-in.
lst = ("hello", "this", "is", "a", "test")

def firstFunction(x):
    return tuple(y.upper() for y in x)

print firstFunction(lst)

出力:

('HELLO', 'THIS', 'IS', 'A', 'TEST')

ここで行われたすべてのことに関する参考文献を次に示します。

http://docs.python.org/2/reference/compound_stmts.html#function-definitions

https://wiki.python.org/moin/Generators

http://docs.python.org/2.7/library/stdtypes.html#str.upper

于 2013-10-25T17:03:21.360 に答える
3

実際には、リストにもタプルにもメソッドはありません.upper()。したがって、これを実現するには、次のステートメントを実行するだけです。

print tuple(x.upper() for x in ("hello", "this", "is", "a", "test"))

http://codepad.org/MZ14yXeV

またはこれ:

print map(lambda x: x.upper(), ("hello", "this", "is", "a", "test"))

http://codepad.org/kc1LaNCY

于 2013-10-25T17:07:13.250 に答える
1
list = ("hello", "this", "is", "a", "test")

タプル、不変、変更、使用、

print tuple((ele.upper() for ele in list))
于 2013-10-25T17:09:52.357 に答える
0

あなたがやろうとしていることは、リスト内包表記を含みます:

print [firstFunction(x) for x in list]

これが行うことは次のとおりです。要素が入力リストの各項目に関数を適用してから印刷した結果であるリストを作成します。

いくつかの(うまくいけば役立つ)コメント

  • 変数に名前を付けるのは悪い習慣ですlist。これはキーワードではありませんが、基本的な python 型の名前であるため、再バインドすると別の場所で混乱が生じる可能性があります。
  • 定義では、引数リストに表示されるdef firstFunction(list)名前は、例で以前に定義された変数とはlist関係がありません。Python でスコープ ルールがどのように機能するかを理解するには、この質問または Python のドキュメントをlist参照してください。
于 2013-10-25T17:08:52.320 に答える