如何在Python中创建其他两个列表中的字符串列表?

时间:2018-05-22 21:04:20

标签: python

我正在尝试创建一个字符串列表,其中每个元素看起来像“TEMP1996_U”。年份(1996年,在这种情况下)来自年份列表,类型(在这种情况下为U)来自字符串列表。我希望列表包含年份和类型的每个组合。

要获得一年只有一年的清单,我知道我可以这样做:

years = range(1990,2000)
type_c = ["U", "R", "K", "B"]
temp_list = map('TEMP{0}'.format, years)

我可以用类似的方式将type_c添加到此列表中吗?

3 个答案:

答案 0 :(得分:4)

from itertools import product, starmap

years = range(1990, 2000)
type_c = ["U", "R", "K", "B"]
temp_list = list(starmap('TEMP{0}_{1}'.format, product(years, type_c)))
print(temp_list)

输出:

['TEMP1990_U', 'TEMP1990_R', 'TEMP1990_K', 'TEMP1990_B', 'TEMP1991_U', 'TEMP1991_R', 'TEMP1991_K', 'TEMP1991_B',
 'TEMP1992_U', 'TEMP1992_R', 'TEMP1992_K', 'TEMP1992_B', 'TEMP1993_U', 'TEMP1993_R', 'TEMP1993_K', 'TEMP1993_B',
 'TEMP1994_U', 'TEMP1994_R', 'TEMP1994_K', 'TEMP1994_B', 'TEMP1995_U', 'TEMP1995_R', 'TEMP1995_K', 'TEMP1995_B',
 'TEMP1996_U', 'TEMP1996_R', 'TEMP1996_K', 'TEMP1996_B', 'TEMP1997_U', 'TEMP1997_R', 'TEMP1997_K', 'TEMP1997_B',
 'TEMP1998_U', 'TEMP1998_R', 'TEMP1998_K', 'TEMP1998_B', 'TEMP1999_U', 'TEMP1999_R', 'TEMP1999_K', 'TEMP1999_B']

答案 1 :(得分:1)

第二种方式(除了Alex Hall的回答)可能如下:

years = range(1990,2000)
type_c = ["U", "R", "K", "B"]

temp_list = []
for i in years:
    for j in type_c:
        temp_list.append("TEMP%s_%s" % (i,j))

答案 2 :(得分:1)

您可以使用list comprehension执行此任务:

int i = 0;
while(input[i] != 0) {
    ++i;
}
//i marks the spot

非常明确和直截了当。这就是python真正闪耀的地方:简单的东西完成了!

temp_list = ['TEMP{0}_{1}'.format(y, t) for y in years for t in type_c]