I have problem with list in python. When I print "list" I have this results:
[1,2,3]
[4,5,6]
So I have two lists in one variable I guess. How can I merge this items to one variable ?
I have problem with list in python. When I print "list" I have this results:
[1,2,3]
[4,5,6]
So I have two lists in one variable I guess. How can I merge this items to one variable ?
I would do, using itertools.chain
:
>>> import itertools
>>> a = [[1, 2, 3], [4 , 5, 6]]
>>> a = itertools.chain.from_iterable(a)
>>> a
[1, 2, 3, 4, 5, 6]
If:
returnList = [[1,2,3], [4,5,6]]
You can very easily do:
>>> returnList = [j for i in returnList for j in i]
Or:
>>> returnList = [j for i in returnList for j in i]
Alternatively, you can also do:
>>> returnList = reduce(lambda i,j: i+j, returnList)
Both will return: [1, 2, 3, 4, 5, 6]
Try this ,
>>> a
[[1, 2, 3], [4, 5, 6]]
>>> result=[]
>>> for i in a:
result+=i
>>> result
[1, 2, 3, 4, 5, 6]
>>>
OR
>>> a
[[1, 2, 3], [4, 5, 6]]
>>> sum(a, [])
Output:
[1, 2, 3, 4, 5, 6]
OR
>>> a1
[1, 2, 3]
>>> a2
[4, 5, 6]
>>> [item for item in itertools.chain(a1, a2)]
Output:
[1, 2, 3, 4, 5, 6]
l = [['0', '1', '2'], ['3', '4', '5']]
def merge_list(l):
temp = []
for i in l:
for j in i:
temp.append(j)
return temp
print merge_list(l)
Result
['0', '1', '2', '3', '4', '5']
listtwo = [8,9,0]
listone = [1,2,3,4,5]
mergedlist = listone + listtwo
Here I collect some of the solution and just try timeit:
Here is my snippet:
#!/usr/bin/python
def f1(List):
x = []
[ x.extend(y) for y in List ]
return x
def f2(List):
return sum(List, [])
def f3(List):
temp = []
for i in List:
for j in i:
temp.append(j)
return temp
def f4(List):
result=[]
for i in List:
result += i
return result
def f5(List):
return [j for i in List for j in i]
import cProfile
import itertools
from faker import Faker
from timeit import Timer
s = Faker()
# instead of faker you can use random module
func = [ f1, f2, f3, f4, f5, f6 ]
Lis = [[ s.random_int(min=1, max=99)
for x in range(1000) ]
for x in range(100)]
for fun in func:
t = Timer(lambda: fun(Lis))
print fun.__name__, cProfile.run('t.timeit(number=1000)')
Output:
f1 102011 function calls in 0.701 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.701 0.701 <string>:1(<module>)
1000 0.040 0.000 0.495 0.000 merge.py:3(f1)
1000 0.001 0.000 0.495 0.000 merge.py:42(<lambda>)
1 0.000 0.000 0.000 0.000 timeit.py:143(setup)
1 0.000 0.000 0.701 0.701 timeit.py:178(timeit)
1 0.206 0.206 0.701 0.701 timeit.py:96(inner)
1 0.000 0.000 0.000 0.000 {gc.disable}
1 0.000 0.000 0.000 0.000 {gc.enable}
1 0.000 0.000 0.000 0.000 {gc.isenabled}
1 0.000 0.000 0.000 0.000 {globals}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
100000 0.455 0.000 0.455 0.000 {method 'extend' of 'list' objects}
2 0.000 0.000 0.000 0.000 {time.time}
None
f2 3011 function calls in 37.747 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 37.747 37.747 <string>:1(<module>)
1000 0.003 0.000 37.418 0.037 merge.py:42(<lambda>)
1000 0.004 0.000 37.415 0.037 merge.py:8(f2)
1 0.000 0.000 0.000 0.000 timeit.py:143(setup)
1 0.000 0.000 37.747 37.747 timeit.py:178(timeit)
1 0.329 0.329 37.747 37.747 timeit.py:96(inner)
1 0.000 0.000 0.000 0.000 {gc.disable}
1 0.000 0.000 0.000 0.000 {gc.enable}
1 0.000 0.000 0.000 0.000 {gc.isenabled}
1 0.000 0.000 0.000 0.000 {globals}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
1000 37.411 0.037 37.411 0.037 {sum}
2 0.000 0.000 0.000 0.000 {time.time}
None
f3 100002011 function calls in 28.044 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 28.044 28.044 <string>:1(<module>)
1000 20.304 0.020 27.676 0.028 merge.py:11(f3)
1000 0.001 0.000 27.677 0.028 merge.py:42(<lambda>)
1 0.000 0.000 0.000 0.000 timeit.py:143(setup)
1 0.000 0.000 28.044 28.044 timeit.py:178(timeit)
1 0.367 0.367 28.044 28.044 timeit.py:96(inner)
1 0.000 0.000 0.000 0.000 {gc.disable}
1 0.000 0.000 0.000 0.000 {gc.enable}
1 0.000 0.000 0.000 0.000 {gc.isenabled}
1 0.000 0.000 0.000 0.000 {globals}
100000000 7.372 0.000 7.372 0.000 {method 'append' of 'list' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
2 0.000 0.000 0.000 0.000 {time.time}
None
f4 2011 function calls in 0.826 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.826 0.826 <string>:1(<module>)
1000 0.463 0.000 0.463 0.000 merge.py:18(f4)
1000 0.001 0.000 0.464 0.000 merge.py:42(<lambda>)
1 0.000 0.000 0.000 0.000 timeit.py:143(setup)
1 0.000 0.000 0.826 0.826 timeit.py:178(timeit)
1 0.362 0.362 0.826 0.826 timeit.py:96(inner)
1 0.000 0.000 0.000 0.000 {gc.disable}
1 0.000 0.000 0.000 0.000 {gc.enable}
1 0.000 0.000 0.000 0.000 {gc.isenabled}
1 0.000 0.000 0.000 0.000 {globals}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
2 0.000 0.000 0.000 0.000 {time.time}
None
f5 2011 function calls in 4.608 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 4.608 4.608 <string>:1(<module>)
1000 4.253 0.004 4.253 0.004 merge.py:24(f5)
1000 0.001 0.000 4.254 0.004 merge.py:42(<lambda>)
1 0.000 0.000 0.000 0.000 timeit.py:143(setup)
1 0.000 0.000 4.608 4.608 timeit.py:178(timeit)
1 0.354 0.354 4.608 4.608 timeit.py:96(inner)
1 0.000 0.000 0.000 0.000 {gc.disable}
1 0.000 0.000 0.000 0.000 {gc.enable}
1 0.000 0.000 0.000 0.000 {gc.isenabled}
1 0.000 0.000 0.000 0.000 {globals}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
2 0.000 0.000 0.000 0.000 {time.time}
None