簡體   English   中英

列表理解中的Python語法錯誤?

[英]Python syntax error in list comprehension?

教授介紹了一種編寫一些代碼的新方法。

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語句中是否存在語法錯誤? 我的程序是突出顯示的。

你不使用,在列表理解。 這工作正常:

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]

教授教你的是清單理解 我愛他們。 寫得簡潔。

另外,您也可以這樣寫,這樣會更長:

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]

順便說一下,如果使用其他語法,上面的代碼可以用簡寫形式編寫:

    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

您應該這樣寫:

    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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM