我有一个 Python 列表如下:-
l=['EUR/USD',
'USD/JPY',
'GBP/USD',
'USD/CAD',
'AUD/USD',
'NZD/USD',
'USD/CHF',
'USD/NOK',
'USD/SEK']
我希望基础货币是美元。这意味着 l
的第一个元素将是 USD/EUR
。以下代码有效,但我想知道是否有更好的方法。
l2=[]
for x in range(len(l)):
l2.append(l[x].split('/'))
k=pd.DataFrame(l2)
for i in range(len(k)):
if k.iloc[i,0]=='USD':
print("base currency is USD")
else:
print("Base currency is not USD. Making it base currency")
temp=k.iloc[i,0]
k.iloc[i,0]='USD'
k.iloc[i,1]=temp
最佳答案
我会这样写,IMO 的可读性更好一些。
>>> l=['EUR/USD', 'USD/JPY', 'GBP/USD', 'USD/CAD', 'AUD/USD', 'NZD/USD', 'USD/CHF', 'USD/NOK', 'USD/SEK']
>>>
>>> result = []
>>> delim = '/'
>>> for currencies in l:
...: first, second = currencies.split(delim)
...: if first == 'USD':
...: result.append(currencies)
...: else:
...: result.append(delim.join((second, first)))
...:
>>> result
>>>
['USD/EUR',
'USD/JPY',
'USD/GBP',
'USD/CAD',
'USD/AUD',
'USD/NZD',
'USD/CHF',
'USD/NOK',
'USD/SEK']
作为一般提示,避免在像瘟疫一样迭代时使用显式索引。通常有比使用整数索引数据结构更具可读性的解决方案(当然,并非总是如此)。
这是一个很酷的视频:Loop like a native: while, for, iterators, generators
关于python - 在 Python 中有效地交换列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53220772/