| Aggregate |
functool.reduce() |
array.reduce() |
stream.reduce() |
array.inject() |
array_reduce() |
array.reduce() |
list.reduce() |
iter.fold() |
foldl() |
reduce() |
| AggregateBy |
Not directly implemented |
Not directly implemented |
Collectors.groupingBy() |
array.group_by() |
array_map() |
Not directly implemented |
groupBy() |
group_by() |
groupBy() |
group-by |
| All |
all() |
array.every() |
stream.allMatch() |
array.all? |
array_all() |
array.all() |
list.all() |
iter.all() |
all() |
every? |
| Any |
any() |
array.some() |
stream.anyMatch() |
array.any? |
array_any() |
array.any() |
list.any() |
iter.any() |
any() |
some? |
| Append |
my_list + [element] |
array.concat([element]) |
Stream.concat() |
array.append() |
array_push() |
array.append() |
list + [element] |
vec.push() |
append() |
conj() |
| AsEnumerable |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
| Average(IEnumerable) |
sum(my_list) / len(my_list) |
array.reduce() / array.length |
list.stream().mapToInt().average() |
array.sum() / array.size() |
array_sum($array) / count($array) |
array.average() |
list.average() |
iter.map().sum() / iter.len() |
mean() |
mean() |
| Average |
sum(my_list) / len(my_list) |
array.reduce() / array.length |
list.stream().mapToInt().average() |
array.sum() / array.size() |
array_sum($array) / count($array) |
array.average() |
list.average() |
iter.map().sum() / iter.len() |
mean() |
mean() |
| Cast |
list(map(type)) |
array.map() |
stream.map() |
array.map(&:to_type) |
array_map('intval', $array) |
array.map() |
list.map() |
iter.map() |
map() |
map() |
| Chunk |
[my_list[i:i+size] for i in range(0, len(my_list), size)] |
Not implemented |
Not implemented |
array.each_slice(size).to_a |
array_chunk($array, size) |
array.chunked(size) |
list.chunked(size) |
iter.chunks(size) |
chunksOf(size) |
partition(size) |
| Concat |
list1 + list2 |
array.concat() |
Stream.concat() |
array.concat() |
array_merge($array1, $array2) |
array.concat() |
list.plus(list2) |
vec.append() |
concat() |
concat() |
| Contains |
value in my_list |
array.includes() |
list.contains() |
array.include? |
in_array(value, $array) |
array.contains() |
list.contains() |
iter.contains() |
elem() |
contains() |
| Count |
len(my_list) |
array.length |
list.count() |
array.size() |
count($array) |
array.count() |
list.size() |
iter.len() |
length() |
count() |
| CountBy |
Not directly implemented |
Not directly implemented |
Collectors.groupingBy() |
array.group_by().size() |
array_count_values() |
Not implemented |
groupBy().count() |
group_by().map() |
groupBy() |
frequencies() |
| DefaultIfEmpty |
my_list or [default_value] |
array.length > 0 ? array : [default_value] |
stream.findFirst().orElse(default_value) |
array.empty? ? [default_value] : array |
empty($array) ? [default_value] : $array |
array.isEmpty() ? [default_value] : array |
list.isEmpty() ? [default_value] : list |
iter.is_empty() ? [default_value] : iter |
ifNull() |
orElse() |
| Distinct |
set(my_list) |
array.filter((value, index, self) => self.indexOf(value) === index) |
list.stream().distinct() |
array.uniq() |
array_unique($array) |
array.unique() |
list.distinct() |
iter.unique() |
nub() |
distinct() |
| DistinctBy |
Not directly implemented |
Not directly implemented |
Collectors.toMap() |
array.uniq_by(&:key) |
array_map() |
Not implemented |
distinctBy() |
iter.distinct_by() |
nubBy() |
distinct-by() |
| ElementAt |
my_list[index] |
array[index] |
list.get(index) |
array[index] |
$array[index] |
array[index] |
list[index] |
iter.nth(index) |
index() |
nth() |
| ElementAtOrDefault |
my_list.get(index, default_value) |
array[index] || default_value |
list.stream().skip(index).findFirst().orElse(default_value) |
array.fetch(index, default_value) |
isset($array[index]) ? $array[index] : default_value |
array[safe_index(index, array)] |
list.getOrElse(index, default_value) |
iter.nth(index, default_value) |
indexOrElse() |
nth() | default_value |
| Empty |
len(my_list) == 0 |
array.length === 0 |
list.isEmpty() |
array.empty? |
empty($array) |
array.isEmpty() |
list.isEmpty() |
iter.is_empty() |
null() |
empty? |
| Except |
my_list - other_list |
array.filter(x => !other_array.includes(x)) |
list.stream().filter(x -> !list2.contains(x)) |
array - other_array |
array_diff($array1, $array2) |
array.filter() |
list.filter() |
iter.filter() |
except() |
remove() |
| ExceptBy |
Not directly implemented |
Not directly implemented |
Collectors.toSet() |
array.reject(&:key) |
array_diff_key() |
Not implemented |
filterNot() |
iter.filter_by() |
removeBy() |
reject-by() |
| First |
my_list[0] |
array[0] |
list.stream().findFirst() |
array.first() |
array_shift($array) |
array.first() |
list.first() |
iter.next() |
head() |
first() |
| FirstOrDefault |
my_list[0] if my_list else default_value |
array[0] || default_value |
list.stream().findFirst().orElse(default_value) |
array.first() || default_value |
array_shift($array) ?: default_value |
array.first() ?? default_value |
list.firstOrNull() ?: default_value |
iter.next_or(default_value) |
headOrElse() |
first() | default_value |
| GroupBy |
groupby(my_list, key_function) |
array.reduce((groups, item) => { groups[item.key] = (groups[item.key] || []).concat(item); return groups; }, {}) |
list.stream().collect(Collectors.groupingBy(x -> x.getKey())) |
array.group_by(&:key) |
array_group_by($array, $key) |
array.groupBy() |
list.groupBy() |
iter.group_by() |
groupBy() |
group-by() |
| GroupJoin |
Not directly implemented |
Not directly implemented |
list1.stream().collect(Collectors.groupingBy(x -> x.getKey(), Collectors.mapping(y -> y, Collectors.toList()))) |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
groupJoin() |
group-join() |
| Index |
my_list.index(value) |
array.indexOf(value) |
list.indexOf(value) |
array.index_of(value) |
array_search($value, $array) |
array.firstIndex(of: value) |
list.indexOf(value) |
iter.position(value) |
elemIndex() |
index-of() |
| Intersect |
set(my_list) & set(other_list) |
array.filter(x => other_array.includes(x)) |
list.stream().filter(x -> list2.contains(x)) |
array & other_array |
array_intersect($array1, $array2) |
array.filter() |
list.intersect() |
iter.intersect() |
intersect() |
intersect() |
| IntersectBy |
Not directly implemented |
Not directly implemented |
Collectors.toSet() |
array & other_array.map(&:key) |
array_intersect_key($array1, $array2) |
Not implemented |
intersectBy() |
iter.intersect_by() |
intersectBy() |
intersect-by() |
| Join |
'separator'.join(my_list) |
array.join('separator') |
list.stream().collect(Collectors.joining("separator")) |
array.join(separator) |
implode($separator, $array) |
array.join(separator) |
list.join(separator) |
iter.join(separator) |
concat() |
clojure.string/join() |
| Last |
my_list[-1] |
array[array.length - 1] |
list.stream().skip(list.size() - 1).findFirst() |
array.last() |
array_pop($array) |
array.last() |
list.last() |
iter.last() |
last() |
last() |
| LastOrDefault |
my_list[-1] if my_list else default_value |
array[array.length - 1] || default_value |
list.stream().skip(list.size() - 1).findFirst().orElse(default_value) |
array.last() || default_value |
array_pop($array) ?: default_value |
array.last() ?? default_value |
list.lastOrNull() ?: default_value |
iter.last_or(default_value) |
lastOrElse() |
last() | default_value |
| LongCount |
len(my_list) |
array.length |
list.stream().count() |
array.size() |
count($array) |
array.count() |
list.size() |
iter.len() |
length() |
count() |
| Max(IEnumerable) |
max(my_list) |
Math.max(...array) |
list.stream().max(Comparator.naturalOrder()).get() |
array.max() |
max($array) |
array.max() |
list.max() |
iter.max() |
maximum() |
apply max() |
| Max |
max(my_list) |
Math.max(...array) |
list.stream().max(Comparator.naturalOrder()).get() |
array.max() |
max($array) |
array.max() |
list.max() |
iter.max() |
maximum() |
apply max() |
| MaxBy |
Not directly implemented |
Not directly implemented |
Collectors.maxBy() |
array.max_by(&:key) |
array_reduce() |
Not implemented |
maxBy() |
iter.max_by() |
maximumBy() |
max-by() |
| Min(IEnumerable) |
min(my_list) |
Math.min(...array) |
list.stream().min(Comparator.naturalOrder()).get() |
array.min() |
min($array) |
array.min() |
list.min() |
iter.min() |
minimum() |
apply min() |
| Min |
min(my_list) |
Math.min(...array) |
list.stream().min(Comparator.naturalOrder()).get() |
array.min() |
min($array) |
array.min() |
list.min() |
iter.min() |
minimum() |
apply min() |
| MinBy |
Not directly implemented |
Not directly implemented |
Collectors.minBy() |
array.min_by(&:key) |
array_reduce() |
Not implemented |
minBy() |
iter.min_by() |
minimumBy() |
min-by() |
| OfType |
filter(lambda x: isinstance(x, type), my_list) |
array.filter(x => x instanceof Type) |
list.stream().filter(Type.class::isInstance) |
array.select { |x| x.is_a?(Type) } |
array_filter($array, 'is_type') |
array.filter() |
list.filterIsInstance() |
iter.filter() |
filter() |
filter() |
| Order |
sorted(my_list) |
array.sort() |
list.stream().sorted() |
array.sort() |
sort($array) |
array.sort() |
list.sort() |
iter.sort() |
sort() |
sort() |
| OrderBy |
sorted(my_list, key=key_function) |
array.sort((a, b) => key_function(a) - key_function(b)) |
list.stream().sorted(Comparator.comparing(key_function)) |
array.sort_by(&:key) |
array_sort_by($array, 'key_function') |
array.sorted(by: key_function) |
list.sortedBy() |
iter.sort_by() |
sortBy() |
sort-by() |
| OrderByDescending |
sorted(my_list, key=key_function, reverse=True) |
array.sort((a, b) => key_function(b) - key_function(a)) |
list.stream().sorted(Comparator.comparing(key_function).reversed()) |
array.sort_by(&:key).reverse |
array_sort_by($array, 'key').reverse() |
array.sorted(by: key_function, descending: true) |
list.sortedByDescending() |
iter.sort_by().reverse() |
sortByDescending() |
sort-by-descending() |
| OrderDescending |
sorted(my_list, reverse=True) |
array.sort().reverse() |
list.stream().sorted(Comparator.reverseOrder()) |
array.sort.reverse |
array_reverse($array) |
array.sorted(reverse: true) |
list.sortedDescending() |
iter.reverse() |
sortDescending() |
reverse() |
| Prepend |
my_list = [item] + my_list |
array.unshift(item) |
list.addFirst(item) |
[item] + array |
array_unshift($array, $item) |
array.insert(0, item) |
list.prepend(item) |
iter.prepend(item) |
prepend() |
conj() |
| Range(Int32, Int32) |
range(start, end) |
Array.from({length: end - start}, (_, i) => i + start) |
IntStream.range(start, end).boxed().collect(Collectors.toList()) |
(start..end).to_a |
range($start, $end) |
Array(start.. |
start..end |
range(start, end) |
[start..end] |
range(start, end) |
| Repeat |
[item] * count |
Array(count).fill(item) |
Collections.nCopies(count, item) |
[item] * count |
array_fill(0, $count, $item) |
Array(repeating: item, count: count) |
List(item, count) |
vec![item; count] |
repeat(count, item) |
repeat(count, item) |
| Reverse |
my_list[::-1] |
array.reverse() |
Collections.reverse(list) |
array.reverse |
array_reverse($array) |
array.reverse() |
list.reversed() |
iter.rev() |
reverse() |
reverse() |
| Select |
map(function, my_list) |
array.map(x => function(x)) |
list.stream().map(function) |
array.map { |x| function(x) } |
array_map('function', $array) |
array.map { function($0) } |
list.map { function(it) } |
iter.map(function) |
map(function) |
map(function) |
| SelectMany |
itertools.chain.from_iterable(my_list) |
array.flatMap(x => function(x)) |
list.stream().flatMap(function) |
array.flat_map { |x| function(x) } |
array_map('function', $array) |
array.flatMap { function($0) } |
list.flatMap { function(it) } |
iter.flat_map(function) |
concatMap(function) |
mapcat(function) |
| SequenceEqual |
my_list == other_list |
array.every((val, index) => val === other_list[index]) |
list.stream().allMatch(other_list::contains) |
array == other_array |
array_diff($array, $other_array) == [] |
array == other_array |
list == other_list |
iter.eq(other_list) |
== |
apply = |
| Single |
next(iter(my_list)) |
array[0] |
list.stream().findFirst().get() |
array.first |
reset($array) |
array.first |
list.first() |
iter.next() |
head() |
first() |
| SingleOrDefault |
next(iter(my_list), default_value) |
array[0] || default_value |
list.stream().findFirst().orElse(default_value) |
array.first || default_value |
reset($array) ?: $default_value |
array.first || default_value |
list.firstOrNull() ?: default_value |
iter.next().unwrap_or(default_value) |
headOr() |
firstOr() |
| Skip |
my_list[start:] |
array.slice(start) |
list.stream().skip(n) |
array.drop(n) |
array_slice($array, $n) |
array.dropFirst(n) |
list.drop(n) |
iter.skip(n) |
drop(n) |
drop(n) |
| SkipLast |
my_list[:-n] |
array.slice(0, -n) |
list.stream().skipLast(n) |
array[0...(array.length - n)] |
array_slice($array, 0, count($array) - $n) |
array.dropLast(n) |
list.dropLast(n) |
iter.skipLast(n) |
init(n) |
drop-last(n) |
| SkipWhile |
itertools.dropwhile(condition, my_list) |
array.sliceWhile(condition) |
list.stream().skipWhile(condition) |
array.drop_while { |x| condition(x) } |
array_filter($array, 'condition') |
array.drop(while: condition) |
list.dropWhile(condition) |
iter.skipWhile(condition) |
dropWhile() |
drop-while() |
| Sum(IEnumerable) |
sum(my_list) |
array.reduce((a, b) => a + b, 0) |
list.stream().mapToInt(Integer::intValue).sum() |
array.sum |
array_sum($array) |
array.sum() |
list.sum() |
iter.sum() |
sum() |
reduce( + ) |
| Sum |
sum(my_list) |
array.reduce((a, b) => a + b, 0) |
list.stream().mapToInt(Integer::intValue).sum() |
array.sum |
array_sum($array) |
array.sum() |
list.sum() |
iter.sum() |
sum() |
reduce( + ) |
| Take |
my_list[:n] |
array.slice(0, n) |
list.stream().limit(n) |
array.take(n) |
array_slice($array, 0, $n) |
array.prefix(n) |
list.take(n) |
iter.take(n) |
take(n) |
take(n) |
| TakeLast |
my_list[-n:] |
array.slice(-n) |
list.stream().skip(list.size() - n) |
array.last(n) |
array_slice($array, -$n) |
array.suffix(n) |
list.takeLast(n) |
iter.takeLast(n) |
takeLast(n) |
take-last(n) |
| TakeWhile |
itertools.takewhile(condition, my_list) |
array.takeWhile(condition) |
list.stream().takeWhile(condition) |
array.take_while { |x| condition(x) } |
array_filter($array, 'condition') |
array.takeWhile(condition) |
list.takeWhile(condition) |
iter.takeWhile(condition) |
takeWhile() |
take-while() |
| ThenBy |
sorted(my_list, key=key_function) |
array.sort((a, b) => key_function(a) - key_function(b)) |
list.stream().sorted(Comparator.comparing(key_function)) |
array.sort_by { |x| key_function(x) } |
usort($array, 'key_function') |
array.sorted { key_function($0) } |
list.sortedBy(key_function) |
iter.sort_by(key_function) |
sortBy() |
sort-by() |
| ThenByDescending |
sorted(my_list, key=key_function, reverse=True) |
array.sort((a, b) => key_function(b) - key_function(a)) |
list.stream().sorted(Comparator.comparing(key_function).reversed()) |
array.sort_by { |x| key_function(x) }.reverse |
usort($array, 'key_function', SORT_DESC) |
array.sorted { key_function($0) }.reverse |
list.sortedByDescending(key_function) |
iter.sort_by(key_function).rev() |
sortByDescending() |
sort-by-descending() |
| ToArray |
list(list(my_list)) |
Array.from(array) |
list.toArray(new Type[0]) |
array.to_a |
array_values($array) |
Array($array) |
list.toTypedArray() |
Vec::from_iter(iter) |
toList() |
into-array() |
| ToDictionary |
dict(zip(keys, values)) |
array.reduce((dict, [key, value]) => { dict[key] = value; return dict }, {}) |
list.stream().collect(Collectors.toMap(key_function, value_function)) |
Hash[array.map { |x| [key_function(x), value_function(x)] }] |
array_combine($keys, $values) |
Dictionary(unique_keys, array) |
list.associateBy(key_function) |
HashMap::new().extend(iter) |
fromListToMap() |
into({}) |
| ToHashSet |
set(my_list) |
new Set(array) |
new HashSet<>(list) |
Set.new(array) |
array_flip($array) |
Set(array) |
HashSet(array) |
HashSet::from_iter(iter) |
set() |
set() |
| ToList |
list(my_list) |
Array.from(array) |
list.stream().collect(Collectors.toList()) |
array.to_a |
array_values($array) |
Array($array) |
list.toList() |
Vec::from_iter(iter) |
toList() |
into([]) |
| ToLookup |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
| TryGetNonEnumeratedCount |
len(my_list) |
array.length |
list.size() |
array.size |
count($array) |
array.count() |
list.size |
iter.count() |
length() |
count() |
| Union |
set(my_list + other_list) |
new Set([...array, ...other_array]) |
Stream.concat(list.stream(), other_list.stream()).collect(Collectors.toSet()) |
array | other_array |
array_merge($array, $other_array) |
array.union(array2) |
list.union(other_list) |
iter.chain(other_iter).collect() |
union() |
union() |
| UnionBy |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
Not implemented |
| Where |
filter(condition, my_list) |
array.filter(condition) |
list.stream().filter(condition) |
array.select { |x| condition(x) } |
array_filter($array, 'condition') |
array.filter { condition($0) } |
list.filter { condition(it) } |
iter.filter(condition) |
filter() |
filter() |
| Zip |
zip(my_list, other_list) |
array.zip(other_array) |
IntStream.range(0, Math.min(list.size(), other_list.size())) |
array.zip(other_array) |
array_map(null, $array, $other_array) |
zip(array, other_array) |
list.zip(other_list) |
iter.zip(other_iter) |
zip() |
zip() |