Python Forum

Full Version: producing numbers out of a list
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Hi, i want to produce 4 digit numbers out of the numbers in the list (like 1111, 1112, 1113, 1114,....)
How can i do that?

list_ = [1, 2, 3, 4] 
range = (1111, 44445)
You need to explain more clearly what you are trying to do, and what have you tried to code this so far?
for x in range(1, 5):
    print(f"111{x}")
Output:
1111 1112 1113 1114
(Nov-09-2021, 08:09 PM)Yoriz Wrote: [ -> ]You need to explain more clearly what you are trying to do, and what have you tried to code this so far?

I want to add all possible 4 digit numbers that i can write by using [1, 2 ,3 ,4 ]
This is what i wrote so far but it's not the right way to do that.
list_1 = [1, 2, 3, 4]
list_2 = list()

for i in range(1111, 4445):
	i = str(i)
	for j in i: 
		if i.count(j) == 1: 
			list_2.append(i)
		else:	
			break
result = 0
	
for n in list_2:				
	n = int(n)
	result += n

print(result)
Have a look at
https://docs.python.org/3/library/iterto...eplacement Wrote:itertools.combinations_with_replacement(iterable, r)
Return r length subsequences of elements from the input iterable allowing individual elements to be repeated more than once.

The combination tuples are emitted in lexicographic ordering according to the order of the input iterable. So, if the input iterable is sorted, the combination tuples will be produced in sorted order.

Elements are treated as unique based on their position, not on their value. So if the input elements are unique, the generated combinations will also be unique.
Possibly want product. Although shoving the results together to make numbers isn't always trivial.

from itertools import product

digits = "1457"

for number_str in product(digits, repeat=4):
    number = int("".join(number_str))
    print(number)
Output:
1111 1114 1115 1117 1141 1144 1145 1147 ...
(Nov-09-2021, 08:46 PM)bowlofred Wrote: [ -> ]Possibly want product. Although shoving the results together to make numbers isn't always trivial.

from itertools import product

digits = "1457"

for number_str in product(digits, repeat=4):
    number = int("".join(number_str))
    print(number)
Output:
1111 1114 1115 1117 1141 1144 1145 1147 ...

This is exactly what i was looking for. Thank you.
What about if i want to product numbers out of the same digits without repition ?
I mean i don't want to product numbers like 1111, 1114, 1115 etc. I want to use a digit only once in a number.
(Nov-12-2021, 04:14 PM)bouraque7878 Wrote: [ -> ]What about if i want to product numbers out of the same digits without repition ?
I mean i don't want to product numbers like 1111, 1114, 1115 etc. I want to use a digit only once in a number.

Then you want "permutations". You need to make sure you only give it each digit one time or it will repeat it.

from itertools import permutations

digits = "1457"

for number_str in permutations(digits, 4):
    number = int("".join(number_str))
    print(number)
Output:
1457 1475 1547 1574 1745 1754 4157 4175 ...
Cheers my friend :)
Pages: 1 2