2017-08-29 9 views
0

は、私は次のリストがあります:Python:リストの各項目を値の範囲で置き換える方法は?

my_list = [22, 37, 48] 

を、私は範囲内のすべての値を、リスト内の各項目xを交換する必要があります。 これは私が成功せずにしようとしたものです:私は次のエラーを取得するので

threshold = 2 
new_list = [y for y in range(x-threshold, x+threshold+1) for x in my_list] 

を:

Unresolved reference 'x' 

を間違った何把握することはできません。

+1

Toあなたのエラーを解決するには、ループの順序を入れ替える必要があります: '' y(範囲内のyのmy_listのxのためのx(x-threshold、x + threshold + 1)) ' –

答えて

0

各要素(x)を配列にしているわけではありません。今のところ、それはネストされたfor-loopのフラット化されたバージョンとして解釈されます。何が必要です:

new_list = [[y for y in range(x-threshold, x+threshold+1)] for x in my_list] 
+0

これは明らかですOPは1Dアレイを望んでいるので、必要ありません。 –

+0

は、問題のユーザーがリストの理解に取り掛かっていたが、ユーザーがそれを正しく実行できず、namerrorで固執していたため、私にとっては間違っていないようだ。 – Gahan

+0

@cᴏʟᴅsᴘᴇᴇᴅ: "リスト内の各アイテムxを、範囲内のすべての値で置き換える必要があります。"またはすべての要素を 'range(..)'で置き換える - 私にネストされたリストのように聞こえます。 – SuperSaiyan

0

あなたが例えば所望の出力を掲載場合には役立つだろう。この答えで私はあなたが結果を望んでいると仮定しました[20,21,22,23,24,35,36,37,38,39,46,47,48,49,50]:

outList = [] 
for x in my_list: 
    outList += [y for y in range(x-threshold, x+threshold+1)] 
関連する問題