gpt4 book ai didi

python - 将非顺序列表元素分配给变量

转载 作者:太空宇宙 更新时间:2023-11-04 07:58:20 25 4
gpt4 key购买 nike

我在 \t 上拆分文件的一行并将每个部分保存在名为 parts 的列表中:

with open(in_file, 'r') as file:
for l in file:
parts = l.rstrip().split('\t')

然后我想将一些元素分配给变量。

在 Perl 中我会这样做:

my @parts = split(/\t/);    
my ($start, $end, $name, $length, $id) = @parts[0,2,3,4,11];

如何在 Python 中实现这一点?我想做一些等同于:

start, end, name, length, id = parts[0,2,3,4,11]  # Doesn't work

相对于:

start = parts[0]
end = parts[2]
...

我知道我可以像这样分配一系列元素:

start, other_var, end = parts[0:3]

但是,如果我想要的元素是非连续的,我该怎么做呢?

最佳答案

您将使用 operator.itemgetter在返回所选项目的元组的 Python 中:

from operator import itemgetter

start, end, name, length, id = itemgetter(0,2,3,4,11)(parts)

当然还有其他方法,但这些可能不是明显的方法


  1. 使用列表理解。这会构建一个列表,此处可能不需要:

    indices = 0,2,3,4,11
    start, end, name, length, id = [parts[i] for i in indices]

  1. maplist.__getitem__ 结合使用。这也在 Python 2 中构建了一个列表,更重要的是,通过魔术方法做事有时会让人感到毛骨悚然:

    indices = 0,2,3,4,11
    start, end, name, length, id = map(parts.__getitem__, indices)

  1. 还有 numpy 有一个 basic/advanced indexing syntax , 但只有在之后对数组进行代数运算时才应使用它,而且还必须安装 numpy:

    import numpy as np

    indices = 0,2,3,4,11
    start, end, name, length, id = np.array(parts)[indices]

关于python - 将非顺序列表元素分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44845677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com