在给定列表中查找偶数和奇数的平方

时间:2017-02-08 09:59:44

标签: python python-2.7

我有一个列表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]

5 个答案:

答案 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])