[英]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.