我有一个列表public class CORSPermissionAuthorizationFilter extends PermissionsAuthorizationFilter {
@Override
public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws IOException {
if(request instanceof HttpServletRequest){
if(((HttpServletRequest) request).getMethod().toUpperCase().equals("OPTIONS")){
return true;
}
}
return super.isAccessAllowed(request, response, mappedValue);
}
}
,我希望找到L = [1, 2, 3, 4, 5, 6, 7, 8]
中所有偶数的平方和L
中所有奇数的平方。
例如,L
应该提供L = [2, 4, 6, 8]
,[4, 16, 36, 64]
应该提供L = [1, 3, 5, 7, 9]
。
我已经尝试过这样,但我无法获得列表:
[1, 9, 25, 49, 81]
答案 0 :(得分:1)
这是列表理解的渴望,但你不能,因为有2个目标列表(你可以,但这意味着测试均匀度两次)。
因此,定义2个输出列表,并使用三元表达式循环输入列表选择一个或另一个列表,这样就可以执行单for a in L:
if 'A' in a or 'B' in a:
clist = a.split()
for c in clist:
if c[::-1] == c:
if c == 'A' or c == 'B':
pass
else:
#print "c1",c
result.append([c])
else:
pass
else:
result.append([a])
print result
(更优雅)
append
结果:
L1=[1,2,3,4,5,6,7,8]
even_sq,odd_sq = [],[]
for i in L1:
(even_sq if i%2==0 else odd_sq).append(i*i)
print(even_sq,odd_sq)
答案 1 :(得分:1)
使用for循环迭代列表,检查每个数字是偶数还是奇数,然后将每个数字的平方追加到正确的列表中:
odd_squares = []
even_squares = []
for num in L1:
if (num % 2) == 0:
even_squares.append(num ** 2)
else:
odd_squares.append(num ** 2)
答案 2 :(得分:0)
您可以使用列表推导来实现您的目标:
L = [1, 2, 3, 4, 5, 6, 7, 8]
even_squares = [e * e for e in L if e % 2 == 0]
odd_squares = [e * e for e in L if e % 2 != 0]
print(odd_squares, even_squares)
<强>输出:强>
[1, 9, 25, 49] [4, 16, 36, 64]
答案 3 :(得分:0)
这类似于Jean-François的解决方案,但通过直接索引适当的列表来避免三元表达:
L = [1, 2, 3, 4, 5, 6, 7, 8]
def even_odd_squares(l):
r = [[], []]
for ll in l:
r[ll%2].append(ll*ll)
return r
even, odd = even_odd_squares(L)
print(even, odd) # [4, 16, 36, 64] [1, 9, 25, 49]
答案 4 :(得分:0)
这没关系吗?
def get_even_odd_squares(no_range):
even_squares, odd_squares = [], []
for no in no_range:
if no % 2 == 0:
even_squares.append(no ** 2)
else:
odd_squares.append(no ** 2)
return even_squares, odd_squares # ([4, 16, 36, 64], [1, 9, 25, 49, 81])