-
暮色呼如
定义一个函数来反转对,然后使用 mapIn [759]: def usd_base(ccy): ...: delimiter = '/' ...: base, term = ccy.split(delimiter) ...: if base != 'USD' and term == 'USD': ...: return delimiter.join((term, base)) ...: return ccy ...:In [760]: list(map(usd_base, l))Out[760]:['USD/EUR', 'USD/JPY', 'USD/GBP', 'USD/CAD', 'USD/AUD', 'USD/NZD', 'USD/CHF', 'USD/NOK', 'USD/SEK']如果您还没有使用 a DataFrame,则可能没有理由为此目的list而为该大小创建一个对于 Python 2,您可以使用map(usd_base, l)
-
jeck猫
我会这样写,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']作为一般提示,在像瘟疫一样迭代时避免使用显式索引。通常有比使用整数索引数据结构更易读的解决方案(当然,并非总是如此)。
-
慕容森
您可以使用endswith+ split+存档join['/'.join(i.split('/')[::-1]) if i.endswith('USD') else i for i in l]结果['USD/EUR', 'USD/JPY', 'USD/GBP', 'USD/CAD', 'USD/AUD', 'USD/NZD', 'USD/CHF', 'USD/NOK', 'USD/SEK']