簡體   English   中英

我和j相當於python

[英]i and j equivalent in python

我想知道python中C ++中“ i”和“ j”的等效項是什么。 我想做的是將一組數字中的每個數字與另一個數字相加(例如,在下面的示例中:[2 + 1],[4 + 3],[6 + 5]) python脫離互聯網,我找不到如何執行此操作的方法。 [下面的示例不起作用。]

even = [2,4,6]
odd = [1,3,5]
both = []
for i in range even[]:
    for j in range odd[]:
        if(i==j):
            both.append(even[i] + odd[j])
print(both)

我嘗試這樣做:

for number1 in even:
    for number2 in odd:
        if(number1==number2):
            both.append(number + number2)

但這僅在數字本身相等時才執行加法運算,這不是我想要的。 任何幫助,將不勝感激。 謝謝!

在python中執行此操作的方式是使用zip

for number1, number2 in zip(even, odd):
    ...

這是一個完整的列表理解示例:

both = [number1 + number2 for number1, number2 in zip(even, odd)]

我想至少有90%的時間會在其他類似C的語言中在循環中使用索引,您可以使用各種內置函數和/或python的for循環的“ for-each”特性在python中避免使用索引。

為什么你的不起作用:

在Python中,通常會遍歷一個列表,元組等等,而迭代結果是內容,而不是索引。

如果需要索引,可以遍歷range(len(...)) ,也可以for index, item in enumerate(l) ,但是在大多數情況下,有更好的方法,例如mgilson的出色回答

zip是一種有用的方法。解決您的問題的另一種方法是使用map方法。

z = [x for x in map(sum,zip(even,odd))]

如何運行ai <j loop in python, and not repeat (j,i) if (i,j) has already been done?< div><div id="text_translate"><p> 我正在嘗試實現一個“i 不等於 j”( i&lt;j )循環,它會跳過i = j的情況,但我還想提出一個額外的要求,即循環不重復(j,i) ,如果(i,j)已經完成(因為,由於對稱性,這兩種情況給出了相同的解決方案)。</p><h3> 第一次嘗試</h3><p>在接下來的代碼中,我通過迭代以下列表來創建i&lt;j循環,其中第二個列表只是前滾 1 的第一個列表:</p><pre> mylist = ['a', 'b', 'c'] np.roll(mylist,2).tolist() = ['b', 'c', 'a']</pre><p> 下面代碼生成的序列結果不是我想要的:</p><pre> import numpy as np mylist = ['a', 'b', 'c'] for i in mylist: for j in np.roll(mylist,2).tolist(): print(i,j)</pre><p> 因為它返回一個重復的aa並重復排列ab和ba :</p><pre> aba c aabbb c ba c b c c c a</pre><p> 所需的序列應該是mylist中元素的成對組合,因為對於N=3元素,應該只有N*(N-1)/2 = 3對循環遍歷:</p><pre> aba c b c</pre></div></j>

[英]How to run a i<j loop in Python, and not repeat (j,i) if (i,j) has already been done?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 Postgres 等價於 python any( i==x for i in j) R是否等效於python中zip [i,j]中x,y的[x [y]]? R相當於`python -i` I() 等效項(在 R 中使用),Python 等效項是什么? 什么是python -i的ruby等價物? 相當於NumPy中的j 如何在 Python 的“i 不等於 j”循環中不重復 i 和 j 的排列? 如何運行ai <j loop in python, and not repeat (j,i) if (i,j) has already been done?< div><div id="text_translate"><p> 我正在嘗試實現一個“i 不等於 j”( i&lt;j )循環,它會跳過i = j的情況,但我還想提出一個額外的要求,即循環不重復(j,i) ,如果(i,j)已經完成(因為,由於對稱性,這兩種情況給出了相同的解決方案)。</p><h3> 第一次嘗試</h3><p>在接下來的代碼中,我通過迭代以下列表來創建i&lt;j循環,其中第二個列表只是前滾 1 的第一個列表:</p><pre> mylist = ['a', 'b', 'c'] np.roll(mylist,2).tolist() = ['b', 'c', 'a']</pre><p> 下面代碼生成的序列結果不是我想要的:</p><pre> import numpy as np mylist = ['a', 'b', 'c'] for i in mylist: for j in np.roll(mylist,2).tolist(): print(i,j)</pre><p> 因為它返回一個重復的aa並重復排列ab和ba :</p><pre> aba c aabbb c ba c b c c c a</pre><p> 所需的序列應該是mylist中元素的成對組合,因為對於N=3元素,應該只有N*(N-1)/2 = 3對循環遍歷:</p><pre> aba c b c</pre></div></j> Python (gurobipy) 相當於 GAMS ord(i) function 如何在python中使2 = 2等價?
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM