你好,我想用for循环从现有列表创建两个新列表。我知道通过切片列表可以得到结果,但是我有一个超过1000个条目的大列表,所以通过计算索引来切片不是很可靠。 我正在学习python,所以可能还有其他我不知道的方法,所以如果有人能解决我的问题,我将不胜感激。你知道吗
所以我有两张单子:
a=np.linspace(1,10,30)
b=np.linspcae(0,6,30)
a
array([ 1. , 1.31034483, 1.62068966, 1.93103448,
2.24137931, 2.55172414, 2.86206897, 3.17241379,
3.48275862, 3.79310345, 4.10344828, 4.4137931 ,
4.72413793, 5.03448276, 5.34482759, 5.65517241,
5.96551724, 6.27586207, 6.5862069 , 6.89655172,
7.20689655, 7.51724138, 7.82758621, 8.13793103,
8.44827586, 8.75862069, 9.06896552, 9.37931034,
9.68965517, 10. ])
b
array([ 0. , 0.20689655, 0.4137931 , 0.62068966, 0.82758621,
1.03448276, 1.24137931, 1.44827586, 1.65517241, 1.86206897,
2.06896552, 2.27586207, 2.48275862, 2.68965517, 2.89655172,
3.10344828, 3.31034483, 3.51724138, 3.72413793, 3.93103448,
4.13793103, 4.34482759, 4.55172414, 4.75862069, 4.96551724,
5.17241379, 5.37931034, 5.5862069 , 5.79310345, 6. ])
所以我的代码是:
for i in a:
if i >2.27-1. and i<2.27+1:
print i
这给了我想要的元素
1.31034482759
1.62068965517
1.93103448276
2.24137931034
2.55172413793
2.86206896552
3.1724137931
但我也需要b中相应的元素。 i、 e
0.20689655
0.4137931
0.62068966
0.82758621
1.03448276
1.24137931
1.44827586
我如何从这里得到想要的结果。你知道吗
在使用numpy时,尽量避免for循环,因为它速度更快,而且有点重要。你知道吗
(a>1.27) & (a<3.27)
只返回一个布尔数组,其中满足条件时值为True
,其他地方值为False
。通过将a
和b
赋给这个数组,您将得到布尔数组的索引为True
的值。你知道吗编辑:
如果你真的想要一个列表返回。如果您在这个for循环中执行其他操作,那么您应该坚持使用for循环。你知道吗
相关问题 更多 >
编程相关推荐