我正在尝试在lambda中创建一个if语句,但是要注意的是,我也试图将所有奇数也设置为第三个,因此lambda行忽略了i ** 3,
numbers = range(1,10)
odd_numbers_to_the_third_2 = list(filter(lambda i : i**3 if i%2!=0 else None , numbers))
在代码的第二行中,如果它是奇数,我将尝试i ** 3,但结果显示的是奇数而不使其成为** 3 我得到[1,3,5,7,9]而不是[1,27,125,343,729]
答案 0 :(得分:1)
由于filter()
仅检查列表项并返回满足条件的值,因此您可以使用map()
来执行所需的操作:
odd_numbers_to_the_third_2 = list(map(lambda i : i**3 if i%2!=0 else None , numbers))
具有以下输出:
[1, None, 27, None, 125, None, 343, None, 729]
odd_numbers_to_the_third_2 = list(map(lambda i : i**3 if i%2!=0 else None , list(filter(lambda i : i%2!=0, numbers ))))
对于此输出:
[1, 27, 125, 343, 729]
答案 1 :(得分:0)
您可以理解:
>>> odd_numbers_to_the_third_2 = [i**3 for i in numbers if i%2 != 0]
>>> odd_numbers_to_the_third_2
[1, 27, 125, 343, 729]
使用filter
和map
:
>>> odd_numbers_to_the_third_2 = list(map(lambda x: x**3, filter(lambda x: x%2 != 0, numbers)))
>>> odd_numbers_to_the_third_2
[1, 27, 125, 343, 729]
答案 2 :(得分:0)
使用map
获取多维数据集,然后过滤掉None
值:
odd_numbers_to_the_third_2 = list(filter(bool,map(lambda i : i**3 if i%2!=0 else None, numbers)))
或者,使用生成器表达式仅将map
应用于奇数并丢弃其余数:
odd_numbers_to_the_third_2 = list(map(lambda i : i**3, (num for num in numbers if num%2!=0)))
或者根本不使用map
/ filter
:
odd_numbers_to_the_third_2 = [num**3 for num in numbers if num%2 != 0]
所有方法的输出:
[1, 27, 125, 343, 729]
答案 3 :(得分:0)
如评论filter
中所述,它不会执行任何实际的转换,而只是使用您的private char[] uniqueKeyGenerator(int len) {
String Capital_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String Small_chars = "abcdefghijklmnopqrstuvwxyz";
String numbers = "0123456789";
String values = Capital_chars + Small_chars + numbers;
// Using random method
Random rndm_method = new Random();
char[] password = new char[len];
for (int i = 0; i < len; i++) {
password[i] = values.charAt(rndm_method.nextInt(values.length()));
}
return password;
}
来决定返回什么。
相反,我将使用带条件的列表理解:
lambda
答案 4 :(得分:0)
因此,您应该先过滤以获取所有奇数并映射以进行变换:
./manager.sh
start
0: job 1
0: job 2
1: job 1
1: job 2
2: job 1
2: job 2
3: job 1
3: job 2
4: job 1
4: job 2
5: job 1
5: job 2
6: job 1
6: job 2
7: job 1
7: job 2
8: job 1
8: job 2
9: job 1
9: job 2
done
理想情况下,您应该使用经证明比list(map(lambda x: x ** 3, filter(lambda i: i % 2, numbers)))
/ map
filter
组合更有效的列表理解:
lambda