python中的双重赋值

bsr*_*bsr 0 python

请在此处查看代码

move_from, move_to = [
        (item['path'], prev_item['path']),
        (prev_item['path'], item['path']),
    ][item['op'] == 'add']
Run Code Online (Sandbox Code Playgroud)

分配给move_from和move_to的内容.它看起来像双重赋值,但没有看到右边的两个(我是一个非python程序员)我试图移植到Javascript,它会是什么样子?

谢谢.

bso*_*ist 5

这个

[
(item['path'], prev_item['path']),
(prev_item['path'], item['path']),
]
Run Code Online (Sandbox Code Playgroud)

是一个Python列表.第一个(0)项是

(item['path'], prev_item['path'])
Run Code Online (Sandbox Code Playgroud)

第二个(1)是

(prev_item['path'], item['path'])
Run Code Online (Sandbox Code Playgroud)

这里的布尔值

[item['op'] == 'add']
Run Code Online (Sandbox Code Playgroud)

计算为True的假(1或0),以便选择其中一个项目.

例如,如果item ['op']等于'add',则结果为

move_from, move_to = prev_item['path'], item['path']
Run Code Online (Sandbox Code Playgroud)

编辑:你问了JS代码.这可能会这样做.请注意,我假设大多数变量都是全局变量,因为我不知道您将在何种上下文中使用它.

String.prototype.rsplit = function(sep, maxsplit) {
    var split = this.split(sep);
    return maxsplit ? [ split.slice(0, -maxsplit).join(sep) ].concat(split.slice(-maxsplit)) : split;
}

function _optimize_using_move(prev_item, item) {
    prev_item['op'] = 'move';
    if (item['op'] == 'add') {
        prev_item['from'] = prev_item['path'];
        prev_item['path'] = item['path'];
    } else {
        var parts = move_from.rsplit('/', 1);
        head = parts[0];
        move_from = parts[1];
        move_from = int(item['path']) - 1;
        prev_item['from'] = head + '/' + item['path'];
        prev_item['path'] = prev_item['path'];
    }
}
Run Code Online (Sandbox Code Playgroud)