SyntaxError:Python内联循环的无效语法

时间:2018-06-01 11:48:37

标签: python python-2.7 for-loop

wordnum = [14, 1, 7, 0, 0, 11]
sentNum = [4, 2, 8, 6, 5, 8]
findtext = [u'I', u'our', u'it', u'The villa', u'It', u'the large main pool']
sentss2 = [
    ['When', 'planning', 'our', 'return', 'trip', 'to', 'Kauai', ',', 'husband', 'and', 'I', 'were', 'happy', 'to', 'read', 'that', 'all', 'the', 'renovations', 'to', 'the', 'Koloa', 'Landing', 'Resort', 'were', 'completed', '.'],
    ['We', 'then', 'went', 'ahead', 'and', 'booked', 'a', 'deluxe', 'studio', 'for', 'mid-October', '.'],
    ['Upon', 'our', 'check', 'in', 'after', 'a', 'long', 'flight', 'and', 'dark', 'rainy', 'drive', 'from', 'the', 'airport', ',', 'we', 'were', 'greeted', 'warmly', 'at', 'the', 'front', 'desk', '.'],
    ['While', 'we', 'are', 'platinum', 'status', ',', 'we', 'were', "n't", 'expecting', 'a', 'room', 'upgrade', ',', 'but', 'much', 'to', 'our', 'delight', ',', 'was', 'advised', 'by', 'the', 'clerk', 'that', 'we', 'received', 'one', '.'],
    ['However', ',', 'it', 'was', "n't", 'until', 'we', 'got', 'to', 'our', 'room', ',', 'or', 'should', 'I', 'say', 'villa', ',', 'how', 'nice', 'the', 'upgrade', 'was', '.'],
    ['It', 'was', 'a', 'one', 'bedroom', ',', '1', '1/2', 'bath', ',', 'almost', '1000', 'square', 'feet', 'corner', 'villa', 'with', '2', 'full', 'walls', 'of', 'windows', 'in', 'the', 'lovely', 'living', 'room', 'alone', '.'],
    ['The', 'villa', 'was', 'beautiful', '.'],
    ['Our', 'view', 'of', 'the', 'smaller', 'family', 'pool', 'and', 'soccer', 'field', 'was', 'so', 'nice', '.'],
    ['Really', 'enjoyed', 'being', 'in', 'this', 'area', 'as', 'it', "'s", 'quieter', 'than', 'the', 'large', 'main', 'pool', '.']
]

我有一个for循环来分配值并替换sentss2中的现有值,并将第一个值降低findtext。我写了一个for循环来做这个并且它完美地工作:

for aa,bb,cc in zip(sentNum,findtext,wordnum):
    sentss2[aa][cc]=findtext[0].lower()

现在我想在一个内联语句中编写它来执行这个耗时更快的循环。如果我像下面那样编写内联循环:

[(sentss2[aa][cc]=findtext[0],findtext[0].lower())[0] for aa,cc in zip(sentNum,wordnum)]

我收到无效的语法错误:

 File "<ipython-input-142-82f373e08c0a>", line 1
    [(sentss2[aa][cc]=findtext[0],findtext[0].lower())[0] for aa,cc in zip(sentNum,wordnum)]
                     ^
SyntaxError: invalid syntax

任何帮助如何编写此内联for循环?

1 个答案:

答案 0 :(得分:2)

您无法在列表理解中进行分配。

无论如何,[...for...]列表理解并不比常规for循环快。无论是一行还是两行,它都是for循环。双行版本具有语法上有效的优点。

坚持原始循环。