我的列表column_names
的值低于
column_names = ['Large Cap', 'Mid Cap', 'Small Cap', 'Value']
我需要创建一个包含以下输出的列表。重复值并将字符串(_PE& _book)附加到列表中的值。 预期产出:
column_names_PE = ['Large Cap_PE', 'Large Cap_book','Mid Cap_PE','Mid Cap_book' 'Small Cap_PE', 'Small Cap_book' 'Value_PE','Value_book']
我可以使用代码[s + "_PE" for s in column_names]
附加字符串。但不确定如何复制和追加字符串。谁能帮帮我吗。
答案 0 :(得分:2)
您可以遍历column_names
并附加item + "_PE"
和item + "_book"
的值:
column_names = ['Large Cap', 'Mid Cap', 'Small Cap', 'Value']
column_names_PE = []
for item in column_names:
column_names_PE.append(item + "_PE")
column_names_PE.append(item + "_book")
print(column_names_PE)
# ['Large Cap_PE', 'Large Cap_book', 'Mid Cap_PE', 'Mid Cap_book',
# 'Small Cap_PE', 'Small Cap_book', 'Value_PE', 'Value_book']
答案 1 :(得分:2)
简单的列表理解会让你更接近:
>>> [[c + '_PE', c + '_book'] for c in column_names]
[['Large Cap_PE', 'Large Cap_book'], ['Mid Cap_PE', 'Mid Cap_book'], ['Small Cap_PE', 'Small Cap_book'], ['Value_PE', 'Value_book']]
要展平嵌套列表,您可以使用chain
中的itertools
:
>>> from itertools import chain
>>> list(chain.from_iterable([[c + '_PE', c + '_book'] for c in column_names]))
['Large Cap_PE', 'Large Cap_book', 'Mid Cap_PE', 'Mid Cap_book', 'Small Cap_PE', 'Small Cap_book', 'Value_PE', 'Value_book']
答案 2 :(得分:2)
如果你有:
column_names = ['Large Cap', 'Mid Cap', 'Small Cap', 'Value']
suffixes = ["_PE", "_book"]
要创建带后缀的列表,您可以执行以下操作:
使用经典循环:
column_names_PE = []
for column_name in column_names:
for suffix in suffixes:
column_names_PE.append(column_name + suffix)
在理解中使用列表:
column_names_PE = [column_name + suffix
for column_name in column_names
for suffix in suffixes]
你得到:
['Large Cap_PE',
'Large Cap_book',
'Mid Cap_PE',
'Mid Cap_book',
'Small Cap_PE',
'Small Cap_book',
'Value_PE',
'Value_book']
答案 3 :(得分:1)
[item for sublist in [(s + "_PE",s + "_book") for s in column_names] for item in sublist]
你可以尝试这个列表理解,它附加一个元组,然后展平列表。结果:
['Large Cap_PE',
'Large Cap_book',
'Mid Cap_PE',
'Mid Cap_book',
'Small Cap_PE',
'Small Cap_book',
'Value_PE',
'Value_book']