n = [3, 5, 7]
def double(lst):
for x in lst:
x *= 2
print x
return lst
print double(n)
なぜこれが返されないのn = [6, 10, 14]
ですか?
次のようなより良い解決策もあるはずです[x *=2 for x in lst]
が、それも機能しません。
forループとリストに関するその他のヒントは大歓迎です。
なぜこれが返されないの
n = [6, 10, 14]
ですか?
n
、またはlst
内部で呼び出されるため、double
変更されることはありません。for numbersx *= 2
と同等であり、参照するオブジェクトを変更せずに名前のみを再バインドします。x = x * 2
x
x
これを表示するには、次のように変更double
します。
def double(lst):
for i, x in enumerate(lst):
x *= 2
print("x = %s" % x)
print("lst[%d] = %s" % (i, lst[i]))
数値のリストをその場で変更するには、その要素を再割り当てする必要があります。
def double(lst):
for i in xrange(len(lst)):
lst[i] *= 2
その場で変更したくない場合は、内包表記を使用します。
def double(lst):
return [x * 2 for x in lst]
これにはリスト内包表記を使用できます。
関数:
def double(lst):
return [i*2 for i in lst]
デモ:
n = [3, 5, 7]
print(double(n))
出力:
[6, 10, 14]
Python では、リスト自体を乗算すると、次のようになります。
print([1, 2]*4)
# [1, 2, 1, 2, 1, 2, 1, 2]
したがって、必要なのはリストの項目を乗算することです。そのため、最初に for ループを使用して、リストを反復処理します。
問題は、変更することx
です。ただし、変更x
してもリストの要素は変更されません。
すべての要素を 2 倍したい場合は、map を使用します。
map(lambda(x):x*2, lst)
a_list = [2,3,4,5,10]
def double_ult(lst):
y = []
for i in range(len(lst)):
lst[i] *= 2
y += [lst[i]]
return y
print(double_ult(a_list))
結果: [4, 6, 8, 10, 20]
.append() メソッドを使用:
b_list = [2,3,4,5,10]
def double_append(lst):
y = []
for i in lst:
lst = 2 * i
y.append(lst)
return y
print(double_append(b_list))
結果: [4, 6, 8, 10, 20]
ここにコードを入力してください
このコードを使用して、リスト内の要素を 2 倍にすることもできます。
a_list = [3, 5, 7]
multiplied_list = [要素 * a_list の要素の 2]
print(multiplied_list)
出力 = [6、10、14