第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以在不迭代的情況下搜索整個元組以查找條目?

是否可以在不迭代的情況下搜索整個元組以查找條目?

慕容708150 2023-05-16 14:44:34
我的程序需要搜索包含月份數(shù)字和值的列表。(1 月是 1,2 月是 2 等等)。如果找到月份整數(shù),我想將其對應(yīng)的值附加到 avg_tuple 數(shù)組。如果它沒有找到月份整數(shù),我希望它將“N/A”附加到 output_tuple 數(shù)組,以進行報告。是否可以在不使用 { for i in my_list: } 方法的情況下搜索我的列表?例如,我的程序的目的是計算一月份所有值的平均值。然后報告。然后取 2 月和 1 月的平均值并報告。然后是 3 月、2 月和 1 月(隨著月份的繼續(xù)……)。如果一個月沒有此列表的值,我希望它報告 N/A。我嘗試了 { if x in my_list } 方法但沒有成功。這是我的代碼:my_list = [(2, 181), (2, 183), (3, 376), (4, 205)]input tuple = my_list#Function to calculate and report back the average duration for each monthdef average_duration(input_tuple):    output_tuple = []    average_tuple = []    for number in range(1,13):        for i in input_tuple:            if i[1] == number:                average_tuple.append(i[3])        if len(average_tuple)==0:            output_tuple.append("N/A")            pass        else:            output_tuple.append((sum(average_tuple))/len(average_tuple))    return output_tuple這是我當(dāng)前的輸出。每個值對應(yīng)每個月。(我使用 OpenPyxl 在電子表格中報告它們):my_list     N/A 182 246.6666667 236.25  236.25  236.25  236.25  236.25  236.25  236.25  236.25  236.25這是我的預(yù)期輸出:my_list     N/A,  182,  246.6666667, 236.25,  N/A,  N/A,  N/A,  N/A,  N/A,  N/A,  N/A,  N/A
查看完整描述

1 回答

?
小唯快跑啊

TA貢獻1863條經(jīng)驗 獲得超2個贊

您可以嘗試?yán)米值鋪硪淮胃櫮械脑路?,這樣您就不必多次循環(huán):


from collections import defaultdict


my_list = [(2, 181), (2, 183), (3, 376), (4, 205)]

input_tuple = my_list


#Function to calculate and report back the average duration for each month

def average_duration(input_tuple):

    months = defaultdict(list)


    output_tuple = []


    for month, value in input_tuple:

        months[month].append(value)


    overall_report = []

    for month in range(12):

        report = months[month + 1]

        if not report:

            output_tuple.append("N/A")

        else:

            overall_report.extend(report)

            output_tuple.append(sum(overall_report)/len(overall_report))


    return output_tuple


print(average_duration(input_tuple))

結(jié)果:


['N/A', 182.0, 246.66666666666666, 236.25, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A']

從復(fù)雜性的角度來看,這基本上與您所能獲得的一樣高效。您修改后顯示的代碼的復(fù)雜性O(shè)(12 * n)為O(12 + N). 一個并不比另一個效率低得多,但是如果不遍歷整個數(shù)組就無法準(zhǔn)確找到這些平均值,因此您只能使用O(N).


查看完整回答
反對 回復(fù) 2023-05-16
  • 1 回答
  • 0 關(guān)注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號