Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
112 views
in Technique[技术] by (71.8m points)

How can I make an inline for loops in python to sum a list of numbers?

I did this for loop and I wanted to put it in only one line.

def mean(list):
    sum = 0
    for i in list:
        sum += i
    return sum // len(list)

I tried this, but it doesn't work, it is a syntax error.

def mean(list):
    sum = 0
    sum = [sum += i for i in list]
    return sum // len(list)
question from:https://stackoverflow.com/questions/65902912/how-can-i-make-an-inline-for-loops-in-python-to-sum-a-list-of-numbers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

A faster (and better) way will be to use built-ins:

def mean(a):
    return sum(a)/len(a)

you cannot make a sum using a inline loop unless you use fancy hacks including the := operator and list comphention.(Not recommended)

BTW,you should never use builtin names as variable names.They will make your code harder to understand,and (sometimes) slower.

Edit: If you really want the loop in one line,here's how to do it (python3.9+ needed)

def mean(a):
    s=0
    return [s:=s+i for i in a][-1]/len(a)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...