美文网首页
可变序列添加多个元素

可变序列添加多个元素

作者: eeert2 | 来源:发表于2020-04-24 11:17 被阅读0次

    对于 可变序列list,collections.deque,我们添加一个元素可以通过

    • .append(value) 尾部添加
    • .insert(index, value) 指定下标插入
    对可变序列添加多个元素呢 ?
    • 第一种,通过 + 完成
    if __name__ == '__main__':
        data = [1, 3, 5]
        target = [2, 4, 6]
        ret = data + target
        data += target
        print(data)  # [1, 3, 5, 2, 4, 6]
    

    这种方法有需要注意的地方,+ 前后的两个参数类型必须相同

    • 第二种,通过.extend()或者 +=
      对于第一种情况的限制,可以通过.extend()或者 +=来实现的
    def target():
        """生成器"""
        for value in range(5):
            yield value
    
    
    if __name__ == '__main__':
        data = []
        data.extend(target())
        print(data)
    

    三、备注

    网上有说+=.extend()效果相同的,甚至说+=调用了.extend()。实际上这种说法是不对的。
    +=在完成数据扩展后有一步将自身引用赋值给自身的操作
    如下:使用 extend()可以正常进行

    if __name__ == '__main__':
        test = (1, 2, [3])
        test[2].extend(target())
        print(test)  # (1, 2, [3, 0, 1, 2, 3, 4])
    

    使用 += 就会报错:

    if __name__ == '__main__':
        test = (1, 2, [3])
        test[2]+=target()
        print(test)
    
    >>> TypeError: 'tuple' object does not support item assignment
    

    相关文章

      网友评论

          本文标题:可变序列添加多个元素

          本文链接:https://www.haomeiwen.com/subject/ltpxwhtx.html