Logo

Programming-Idioms

# 227 Copy a list
Create the new list y containing the same elements as the list x.

Subsequent modifications of y must not affect x (except for the contents referenced by the elements themselves if they contain pointers).
New implementation

Be concise.

Be useful.

All contributions dictatorially edited by webmasters to match personal tastes.

Please do not paste any copyright violating material.

Please try to avoid dependencies to third-party libraries and frameworks.

Other implementations
List<T> y = x.ToList();
List<Int32> y = new List<Int32>(x);
y = [...x];
type (foo), allocatable, dimension(:) :: y
y = x
import "slices"
y := slices.Clone(x)
y := make([]T, len(x))
copy(y, x)
let y = x.slice();
import java.util.ArrayList;
List<T> y = new ArrayList<>(x);
local function deepcopy(input)
 local t=type(input)
 if t~="table" then
  return input
 end
 local copy={}
 for k,v in pairs(input) do
  k=deepcopy(k)
  v=deepcopy(v)
  copy[k]=v
 end
 return copy
end
local y=deepcopy(x)
uses classes;
y.assign(x);
use Storable qw(dclone);
my @y = @x; # for simple arrays

# for complex arrays with references:
my @y = @{dclone(\@x)};
y = x[:]
y = x.copy()
y = x.dup
let y = x.clone();