教授介绍了一种编写代码的新方法。
x=[1,2,3,4,5,6,7,8,9]
y=[i<6 , for i in x]
print(y)
我期待以下输出
True, True, True, True, True, False, False, False, False
y语句中是否存在语法错误?我的节目突出了部分内容。
答案 0 :(得分:3)
您不在列表推导中使用,
。这很好用:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [i<6 for i in x]
print(y)
返回[True, True, True, True, True, False, False, False, False]
你的教授教你的是list comprehension。我爱他们。简洁易懂。
或者,您可以像这样编写,这样会更长:
z = []
for i in x:
if i < 6:
z.append(True)
else:
z.append(False)
print(z)
会返回[True, True, True, True, True, False, False, False, False]
顺便说一句,上面的代码可以也用速记写if else语法:
z = []
for i in x:
z.append(True) if i < 6 else z.append(False)
return z
无论如何,这是一个更完整的单元测试解决方案,供您细读。
import unittest
def so_26923986(x):
y = [i < 6 for i in x]
return y
def so_26923986_1(x):
z = []
for i in x:
z.append(True) if i < 6 else z.append(False)
return z
单元测试
# Unit Test
class Test(unittest.TestCase):
def testcase(self):
self.assertEqual(so_26923986([1, 2, 3, 4, 5, 6, 7, 8, 9]), [True, True, True, True, True, False, False, False, False])
self.assertEqual(so_26923986_1([1, 2, 3, 4, 5, 6, 7, 8, 9]), [True, True, True, True, True, False, False, False, False])
self.assertEqual(so_26923986([1, 2, 3]), [True, True, True])
self.assertEqual(so_26923986_1([1, 2, 3]), [True, True, True])
self.assertEqual(so_26923986([1, 2, 7, 10, 3, 8]), [True, True, False, False, True, False])
self.assertEqual(so_26923986_1([1, 2, 7, 10, 3, 8]), [True, True, False, False, True, False])
unittest.main()
测试传递
Ran 1 test in 0.000s
OK
答案 1 :(得分:1)
你应该这样写:
x=[1,2,3,4,5,6,7,8,9]
y=[i<6 for i in x]
print y
您的代码还可以,但请从列表中删除,
。
输出:
[True, True, True, True, True, False, False, False, False]