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

在Python中有效地交换列表元素,python,list,vectorization,Python,List,Vectorization,我有一个Python列表,如下所示:- l=['EUR/USD', 'USD/JPY', 'GBP/USD', 'USD/CAD', 'AUD/USD', 'NZD/USD', 'USD/CHF', 'USD/NOK', 'USD/SEK'] 我希望基础货币是美元。这意味着l的第一个要素是美元/欧元。下面的代码可以工作,但我想知道是否有更好的方法 l2=[] for x in range(len(l)): l2.append(l[x].split('/')) k=pd

我有一个Python列表,如下所示:-

l=['EUR/USD',
 'USD/JPY',
 'GBP/USD',
 'USD/CAD',
 'AUD/USD',
 'NZD/USD',
 'USD/CHF',
 'USD/NOK',
 'USD/SEK']
我希望基础货币是美元。这意味着l的第一个要素是美元/欧元。下面的代码可以工作,但我想知道是否有更好的方法

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

我会这样写,这在我看来更具可读性

>>> 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']
作为一般提示,在像瘟疫一样迭代时,避免使用显式索引。通常有一种比用整数索引到数据结构更可读的解决方案,当然,并非总是这样


这里有一个很酷的视频:

我会这样写,这在我看来更具可读性

>>> 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']
作为一般提示,在像瘟疫一样迭代时,避免使用显式索引。通常有一种比用整数索引到数据结构更可读的解决方案,当然,并非总是这样


这里有一个很酷的视频:

定义一个函数来反转成对,然后使用map

如果您还没有使用数据帧,那么可能没有理由仅为该大小的列表创建一个数据帧

对于Python2,您只需使用

map(usd_base, l)

定义一个函数来反转该对,然后使用map

如果您还没有使用数据帧,那么可能没有理由仅为该大小的列表创建一个数据帧

对于Python2,您只需使用

map(usd_base, l)
您可以使用endswith+split+join进行存档

结果

您可以使用endswith+split+join进行存档

结果

['USD/EUR',
 'USD/JPY',
 'USD/GBP',
 'USD/CAD',
 'USD/AUD',
 'USD/NZD',
 'USD/CHF',
 'USD/NOK',
 'USD/SEK']