管理列表中的整数

时间:2013-12-25 09:44:10

标签: python list

我有两个这样的列表:

[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

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只是创建一个新的列表列表,我们可以使用它们来获取它们之间的对应关系。