我有两个这样的列表:
[2005, [4, 5, 6, 7], 2006, [4, 5, 6, 4]]
[7, 6]
第一个列表:年份后跟一个带有值的新列表,2005包含值4,5,6和7 第二个列表:包含第一个列表中列表中的最大值。
问题:
每年输出一次,然后是每个值,其中str表示“local max”和“all time high”。例如,在我的情况下:
2005
4
5
6
7 (local max)(all time high)
2006
4
5
6 (local max)
4
我相当困在这里,我尝试了一些不同的方法,但我不确定如何真正比较这些值然后附加一个字符串。我想我需要将我的值转换为字符串以便能够附加我的文本吗?
解:
对于缺乏信息/努力的主题再次抱歉。我会知道提出我的解决方案,希望其他新手,比如我自己,从我的经验中学到一些东西。
A = [2005, [4, 5, 6, 7], 2006, [4, 5, 6, 4]]
B = [7, 6]
all_years = A[::2]
while n < all_years - 1:
for month_list in A[1::2]:
k = 0
print(all_years[n])
for every_month in month_list:
k += 1
attr = ''
if every_month == max(month_list):
attr = '(local max)'
if every_month == max(B):
attr += '(all time high)'
print("""")
n += 1
答案 0 :(得分:0)
您可以使用zip
函数和一些聪明的列表切片以非常干净的方式执行此操作。
A = [2005, [4, 5, 6, 7], 2006, [4, 5, 6, 4]]
B = [7, 6]
global_max = max(B)
for year, year_list, max_year in zip(A[::2], A[1::2], B):
print year
for year_val in year_list:
if year_val == global_max:
print year_val, "(local max) (global max)"
elif year_val == max_year:
print year_val, "(local max)"
else:
print year_val
A[::2]
只需从A
列表中获取每个第二项,从第一项开始。 A[1::2]
也会这样做,但从第二项开始。 zip
只是创建一个新的列表列表,我们可以使用它们来获取它们之间的对应关系。