この関数を正しく作成するためにいくつか試してみましたが、何も試みていないようです。私は何をすべきかというアイデアは多少あると思いますが、どうやってそれをしようとしているのかは分かりません。だから私はすでにstring_avg(L)という機能を持っています。私はこの機能に使うことができると思います。 string_avg(L)は、次のコードで定義されます。各サブリスト内の関数/メソッドを適用します。サブリスト全体のリストではなく、Pythonで全体を表します。
'''(list of str) -> list of list
Given a list of strings where each string has the format:
'name, grade, grade, grade, ...' return a new list of
lists where each inner list has the format :
[name (str), average grade (float)]
Requirement: This function should be 1 line long.
>>> string_avg(['Jo, 92, 80', 'Bill, 60, 70', 'Cal, 98.5, 100, 95.5, 98'])
[['Jo', 86.0], ['Bill', 65.0], ['Cal', 98.0]]
'''
しかし、今、私は次のコードを記述する必要があります。
def string_avg_update(L):
'''(list of str) -> NoneType
Given a list of strings where each string has the format:
'name, grade, grade, grade, ...' update the given
list of strs to be a list of floats where each item
is the average of the corresponding numbers in the
string. Note this function does NOT RETURN the list.
>>> L = ['Jo, 50, 92, 80', 'Bill, 60, 70', 'Cal, 98.5, 100, 95.5, 98']
>>> string_avg_update(L)
>>> L
[89.0, 65.0, 98.0]
'''
のでstring_avg_update(L)を取得するには、Iのけれどもおそらくstring_avg(L)を使用して、[['' Jo '、86.0]、[' Bill '、65.0]、[' Cal '、98.0]]を作成し、各サブリストから名前を削除し、各リストから1つのリストへのintです。これを行う方法はありますか?リストの最初の文字を削除する方法はわかりませんが、list.pop()はリストの最後の文字を削除するので、list.reverse()を使用して各サブリスト内の最初の数字を配置すると、可能であれば、サブリストを一緒に結合します。ただし、list.reverseを使用すると、各サブリスト内の項目を逆順にする代わりに、サブリストの順序が逆転します(つまり、最初の項目が最初に表示されます)。 list.pop()を使うことができるように各リストが逆転されるようにする方法はありますか(各サブリストでどのように使用するかを理解できれば)。
リストから文字列だけを削除する方法があるので、すべてのサブリストに参加して名前を削除することができます。 またはの場合は、各サブリストから名前を削除するためにdelを使用することになりますが(del list [0]を使用して)、再度使用するとdelを各サブリストに渡す方法がわかりませんdel list [0]として、各サブリストの最初の文字ではない最初のサブリストを削除します。
ここで重要なのは、サブリストにリストとしてではなく、個々のサブリストに関数/メソッドを適用する方法です。
ありがとうございます!
これはdictionnary noを使用するのに最適な場所のようですか? – Tissuebox
あなたはここでリストの理解について考えるべきです。いずれかの*リストから2番目の要素(グレード)を選択する方法について考えてみましょう: 'L [1]'でしょうか?ですから、どのように*すべての*サブリストからその要素を選択できますか? – bnaecker
私はそれが私の質問だと思う..もし私が "Lのサブリスト"を使うなら、L [1]を選択するか、L [0]を削除するだけのことについて何かを書きますか? – Rir8