Skip to main content
 首页 » 编程设计

python之在 Python 中有效地交换列表元素

2025年05月04日1298°冷暖

我有一个 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