1

R から来て、これを把握するのは困難でした。リストからの要素の取得は、 position から始まり0ます。問題は、あるリストを使用して別のリストからアイテムを選択することは、ここでは同じペースで実行されないことです。

list1 = [1,2,3,4]

list2 = [1,2,3,4]

for x in range(0, len(list1)):
    print(list1[list2[x]])

これにより、次のようになります。

>> 2
>> 3
>> 4
>> IndexError: list index out of range

list1 の先頭に余分なアイテムを配置し、list2 の最後にアイテムを追加すると、問題は停止します (単純に、このように同期していないためです)。

明らかに、私はまだ言語に慣れていません。あるリストの値を使用して別のリストから値を選択する正しい方法は何でしょうか?

これはそれを考える正しい方法ですか?

for x in range(0, len(list1)):
    print(list1[list2[x]-1])
4

2 に答える 2

2

Python は 0-index ベースです。seq[0]の最初の要素ですseq

R は 1 インデックス ベースです。

だから、はい、Pythonで使用できます

list1 = [1,2,3,4]
list2 = [1,2,3,4]
for x in range(0, len(list2)):
    print(list1[list2[x]-1])
  • 範囲はlen(list2)ではなくまでlen(list1)です。
  • また、range(0, len(list2))と同じrange(len(list2))です。range引数が 1 つだけ渡された場合、値として解釈され、 stop デフォルトで開始値 0 が使用されます。

Python では次のことに注意してください。

for x in range(...):

多くの場合、避けることができます。代わりに、次のように書くことができます

for item in list2:
    print(list1[item-1])    

item各項目に割り当てられますlist2

于 2013-03-16T22:06:35.520 に答える
1

リストに 4 つの項目がある場合、インデックスは 0 から 3 まで実行する必要があるため、値 4 を使用するとエラーがスローされます。より明確にするための文字の例を次に示します。

list1 = [0,2,1,3]
list2 = ['a','a','d','m']

for x in list1:
    print(list2[x]),

=> a d a m
于 2013-03-16T22:06:50.390 に答える