1

こんにちは、私は Python を初めて使用し、完了したいこの演習がありますが、次のエラーが表示されます: 'int' オブジェクトには属性 'sort' がありません。for-loop を使用して数値のリストから取得し、それらをすべて正方形にしてから、並べ替えて 1 つずつ出力する必要があります。sort コマンドの使用方法が間違っていませんか? それとも、数字でも機能しませんか?また、.append() コマンドを使用してすべてを 1 つずつ出力する必要がありますか? だから、これはこれまでのところ私の志望のコードです:

start_list = [5, 3, 1, 2, 4]
square_list = []
for square_list in start_list:
    square_list ** 2
print square_list.sort()
4

4 に答える 4

3

次の 3 つの問題があります。

  1. forループの中でstart_list上から割り当てています。square_list
  2. 結果をリストに追加していません(上記の理由により、これはとにかく失敗します)。

最終結果は、 yoursquare_listはリストではないため、ソートできません。

次のコードを比較してください。

start_list = [5, 3, 1, 2, 4]
square_list = []
for item in start_list:
    square_list.append(item ** 2)

ここでは、itemfor each ループを使用してリストを反復処理します。次に、それを ( を使用して) 2 乗し** 2、 に追加しますsquare_list

  1. print ステートメントにも問題があります。print square_list.sort()

ここでは.sort()、リストで使用してからprint、戻り値を取得しようとしています。しかし、リストをその場.sort()でソートしてから返します。したがって、この行は常に出力されます。ソートされたリストを印刷するには、ソートされたリストを返す関数を使用して、次のように渡すことができます。NoneNonesorted()print

print sorted(square_list)

または、印刷する前にリストを並べ替えることができます。

square_list.sort()
print square_list
于 2015-02-23T20:56:52.533 に答える
1

最もpythonicな解決策は

start_list = [5, 3, 1, 2, 4]
square_list = [ i ** 2 for i in start_list ]
print(sorted(square_list))

またはワンライナー:

print(sorted(i ** 2 for i in [5, 3, 1, 2, 4]))

あなたのコードを分析しましょう:

# here you create an empty list and assign it to
# square list
square_list = []

# yet here you will assign each item of start_list
# to the name square list one by one
for square_list in start_list:
    # then you square that number, but it is not stored anywhere
    square_list ** 2

# at this point, square_list contains the last element
# of start_list, that is the integer number 4. It does 
# not, understandably, have the `.sort` method.
print square_list.sort()

簡単な修正は次のとおりです。

start_list = [ 5, 3, 1, 2, 4 ]
square_list = []
for element in start_list:
    square_list.append(element ** 2)
square_list.sort()  # note that printing this would say "None"
print square_list
于 2015-02-23T20:56:03.880 に答える
0

for ループを理解する必要があります。

for square_list in start_list:
    square_list ** 2

square_listこの例では、作成した空のリストを参照していません。リストから値を抽出するためのあいまいな変数として使用されます。そのため、これは各反復中のリスト内の各値にすぎず、リストにあるため、すべて整数です。

第二に、実際にはリストに四角形を追加しているのではなく、四角形を計算しているだけで何もしていません。最後に、sort メソッドは何も返さず、値を返さずにリストを変更するだけです。リストを変更しないが、新しい値を返す、同等の sorted メソッドを使用します。いくつかのコードで最もよく理解できると思います。

start_list = [5, 3, 1, 2, 4]
square_list = []

# for loop number is ambiguous variable

for number in start_list: 
    square = number ** 2 # calculate square to add later
    square_list.append(square) # add the calculation

print sorted(square_list) # print sorted version
于 2015-02-23T21:05:12.160 に答える
0

ループの後、あなたsquare_listは整数にバインドされます[正確には、その値は4]です。

平方数のリストを作成するには、リスト内包表記を使用できます。

square_list = [i**2 for i in start_list]

そして、それを並べ替えます:

square_list.sort()

于 2015-02-23T20:56:15.710 に答える