如何在一行中编写并行循环迭代(列表具有不等长度)

Yas*_*eth 1 python list python-3.x

li1 = [['a','b','c'], ['c','d','e']]
li2 = [['c','a','b'], ['c','e','d']]
c = 1
for i in range(len(l11)):
    if (sorted[li1[i]]!=sorted(li2[i]):
        c = 0
if(c): k = True
else: k = False
Run Code Online (Sandbox Code Playgroud)

如何在一行中写这个?另外如何使用zip()来完成这个?怎么li2 = [['a','c','b']]办?使用zip会返回True但它应该给出一个False.

fal*_*tru 5

你可以使用zip:

>>> zip(li1, li2)
<zip object at 0x0000000000723248>
>>> list(zip(li1, li2))
[(['a', 'b', 'c'], ['c', 'a', 'b']), (['c', 'd', 'e'], ['c', 'e', 'd'])]
Run Code Online (Sandbox Code Playgroud)

并且all:

>>> all([True, True, True])
True
>>> all([True, False, True])
False
Run Code Online (Sandbox Code Playgroud)
k = all(sorted(x) == sorted(y) for x, y in zip(li1, li2))
Run Code Online (Sandbox Code Playgroud)