Python如何在for循環(huán)中同時使用兩個變量與兩個控制條件
在C語言中常常遇到for循環(huán)使用兩個變亮和兩個控制條件的情況,比如我要輸出矩陣對角線元素的坐標時
例如輸出:
0,0
1,1
2,2
3,3
...
在C語言中,我們會這樣使用for循環(huán)來輸出
for(i=0,j=0;i<n,j<n;i++,j++){ printf(i,j) printf("\n") }
在python中如何使用for循環(huán)達到類似于上面c語言的這樣的結果呢?
一開始很多人不假思索的就直接敲下如下的代碼
for i in range(n): for j in range(n):
很明顯,這樣的邏輯是不對的,因為我們要求在一個for循環(huán)內滿足兩個控制條件,如果按照上面代碼的邏輯,就是遍歷完一次j的值,i才會+1,和上面每一次i,j的值同時加一相違背。
這里就可以用python中的zip()
函數(shù)。
先來直觀看一下zip()函數(shù)的作用
a = [1,2,3] b = [4,5,6] c = [4,5,6,7,8] zipped = zip(a,b) # 返回一個對象 zipped <zip object at 0x103abc288> >>> list(zipped) # list() 轉換為列表 [(1, 4), (2, 5), (3, 6)] >>> list(zip(a,c)) # 元素個數(shù)與最短的列表一致 [(1, 4), (2, 5), (3, 6)]
故可以改為
for i,j in zip(range(n),range(n)): print(i,j)
輸出結果同上.
有些人可能疑惑這里也可以用
for i in range(n): print(i,i)
來表示
不過這個是一個特殊的情況,如果i,j值不同的話,我們只能使用zip()
函數(shù)來達到同上面c語言同樣的目的。
附:python多個變量的for循環(huán)
當for循環(huán)有兩個需要迭代的對象時,要用zip對這多個變量封裝,否則會報錯“too many values to unpack”
錯誤的例子:
starts = [0,1,2,3,4] ends = [5,6,7,8,9] for start, end in starts, ends: print((start, end))
正確的例子:
starts = [0,1,2,3,4] ends = [5,6,7,8,9] for start, end in zip(starts, ends): print((start, end))
總結
到此這篇關于Python如何在for循環(huán)中同時使用兩個變量與兩個控制條件的文章就介紹到這了,更多相關Python for循環(huán)同時用兩個變量和控制條件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
關于Python不換行輸出和不換行輸出end=““不顯示的問題(親測已解決)
這篇文章主要介紹了關于Python不換行輸出和不換行輸出end=““不顯示的問題(親測已解決),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10