簡體   English   中英

Python - 從一系列嵌套列表中刪除 1 個字符

[英]Python - Removing 1 char from a series of nested lists

我已經用下面的代碼解決了這個問題,但我試圖理解一種更好的方法來去除每串數字末尾的零,因為它們會影響計算。 我的解決方案似乎很笨拙,有沒有更優雅的方法來解決這個問題,而無需 for 循環刪除 0?

編碼問題:

確定一系列數字的平均值,如下所示:

97 143 3 149 1 181 195 76 0

8042 4302 1273 3858 4019 8051 4831 7747 4887 768 6391 7817 2635 6203 0

1783 218 154 360 409 929 1503 428 73 1505 1868 1625 64 1613 0

import sys
inp = sys.stdin.readlines()
lin = []

for i in inp[1:]:
    lin.append(map(int,i.split()))

/ - -症結 - -

for r in lin:
    del r[-1]

/------------

for n in lin:
print int(round((sum(n) / float(len(n))))),

任何其他批評和建設性批評表示贊賞。

您可以使用切片和列表理解一次性完成所有操作:

lin = [map(int,i.split())[:-1] for i in inp[1:]]

就完成工作而言,我認為看起來還不錯。 為什么不這樣做:

If r[-1] == 0:
    Del r[-1]

你不能這樣做:

lin=[]
for line in sys.stdin:
    lin.append([float(e) for e in line.split()[:-1]])

所以這變成了一行:

lin=[[float(e) for e in line.split()[:-1]] for line in sys.stdin]

然后你的平均值變成:

avgs=[sum(e)/len(e) for e in lin]
>>> avgs
[105.625, 5058.857142857143, 895.1428571428571]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM