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
96 views
in Technique[技术] by (71.8m points)

Problem in list comprehension output in python

I have the following liste

d=[[(1.0,1.1,1223),(2.0,1.1,1224)],[(3.0,1.1,1222),(4.0,1.1,1222)],[(5.0,1.1,1222),(1.0,1.1,1222)]]

I want to obtain the following result using list comprehension:

[[(1.0, 1.1), (2.0, 1.1)], [(3.0, 1.1), (4.0, 1.1)], [(5.0, 1.1), (1.0, 1.1)]]

I have done this

g= [d[i][y][:2] for i in range(len(d)) for y in range(len(d[i]))]

However, i got this output:

[(1.0, 1.1), (2.0, 1.1), (3.0, 1.1), (4.0, 1.1), (5.0, 1.1), (1.0, 1.1)]

Where is the error?

question from:https://stackoverflow.com/questions/65647267/problem-in-list-comprehension-output-in-python

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

1 Reply

0 votes
by (71.8m points)

If you want a list comprehension, you need to use one that takes into account that your list d is nested,

g = [[y[:2] for y in x] for x in d]

Here the outer list comprehension loops through the inner lists of d, and the inner list comprehension loops through the tuples in those inner lists.


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

...