以這段代碼為例:
import csv
with open('Airports.txt', 'r') as f:
reader = csv.reader(f)
amr_csv = list(reader)
for line in amr_csv:
print(line)
輸入:
JFK,John F Kennedy International,5326,5486。
ORY,巴黎 - 奧利,629,379。
瘋狂,阿道夫·蘇亞雷斯馬德里-巴拉哈斯,1428,1151。
AMS,阿姆斯特丹史基浦機場,526,489。
蔡,開羅國際,3779,3584。
代碼輸出如下串列: [['JFK', 'John F Kennedy International', '5326', '5486'], ['ORY', 'Paris-Orly', '629', '379'], ['MAD', 'Adolfo Suarez Madrid-Barajas', '1428', '1151'], ['AMS', 'Amsterdam Schiphol', '526', '489'], ['CAI', 'Cairo International' , '3779', '3584'], []]
因此,假設當迭代器位于第二個元素并且我想將其值與第一個元素中的一個元素進行比較時,(例如:比較 ORY 和 JFK)我該怎么辦?如果我這樣做:
j = i-1
for i in line:
if i[0] != j[0]
它給了我一個錯誤:
j = i-1。
TypeError: 不支持的運算元型別 -: 'list' 和 'int'。
我怎樣才能做到這一點而不會出錯?
uj5u.com熱心網友回復:
給定輸入:
input = [['JFK', 'John F Kennedy International', '5326', '5486'], ['ORY', 'Paris-Orly', '629', '379'], ['MAD', 'Adolfo Suarez Madrid-Barajas', '1428', '1151'], ['AMS', 'Amsterdam Schiphol', '526', '489'], ['CAI', 'Cairo International', '3779', '3584'], []]
您可以像這樣迭代串列:
for i in range(1, len(input)):
print(f'{input[i-1][0]}, {input[i][0]}')
這將列印:
JFK, ORY
ORY, MAD
MAD, AMS
AMS, CAI
只需將變數參考用于比較目的以及根據相等結果撰寫代碼所需的任何指令。
uj5u.com熱心網友回復:
我不知道“內置”功能允許人們獲取串列中的“先前”專案。通過mylist[index -1]它當然是一個有效的選擇(參見@cesarv 的回答:https ://stackoverflow.com/a/70685822/218663 ),我贊成。
但是,如果是我,我個人會對事情更加明確,這樣未來的人就不會猜測我正在嘗試做什么。
為此,我會維護一個prior變數。
data_in = [
['JFK', 'John F Kennedy International', '5326', '5486'],
['ORY', 'Paris-Orly', '629', '379'],
['MAD', 'Adolfo Suarez Madrid-Barajas', '1428', '1151'],
['AMS', 'Amsterdam Schiphol', '526', '489'],
['CAI', 'Cairo International', '3779', '3584'],
]
prior = data_in[0]
for current in data_in[1:]:
print(f'{prior[0]}, {current[0]}')
prior = current
uj5u.com熱心網友回復:
for i in range(len(amr_csv)):
for j in range(len(amr_csv[i])):
# start at second element
if i:
if amr_csv[i][j] == amr_csv[i-1][j]:
# do something
pass
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/409991.html
標籤:
