Reputation: 87
I have a list of items, say x = ['Zwi', 'sche', 'n', 'ab', 'schlus', 'ses']
I am trying to write a loop to add hyphen between one word at a time and the result should be something like below:
Zwi-schenabschlusses
Zwische-nabschlusses
Zwischen-abschlusses
Zwischenab-schlusses
Zwischenabschlus-ses
Can anyone help me?
Upvotes: 0
Views: 110
Reputation: 2047
strs = ['Zwi', 'sche', 'n', 'ab', 'schlus', 'ses']
for index in range(1,len(strs)):
out = '{}-{}'.format(''.join(strs[0:index]),''.join(strs[index:]))
print(out)
Zwi-schenabschlusses
Zwische-nabschlusses
Zwischen-abschlusses
Zwischenab-schlusses
Zwischenabschlus-ses
Upvotes: 1
Reputation: 17322
you can use list comprehension with f-strings:
print(*[f"{''.join(x[:i])}-{''.join(x[i:])}" for i in range(1, len(x))], sep='\n')
output:
Zwi-schenabschlusses
Zwische-nabschlusses
Zwischen-abschlusses
Zwischenab-schlusses
Zwischenabschlus-ses
or you can use a generator with join
method:
def generate_str(x):
add_word = ''
for word_index, word in enumerate(x[:-1]):
add_word += word
yield f"{add_word}-{''.join(x[word_index + 1:])}"
print('\n'.join(generate_str(x)))
output:
Zwi-schenabschlusses
Zwische-nabschlusses
Zwischen-abschlusses
Zwischenab-schlusses
Zwischenabschlus-ses
Upvotes: 1
Reputation: 66
x = ['Zwi', 'sche', 'n', 'ab', 'schlus', 'ses'] d = [''.join(x[:range_]) + "-" +''.join(x[range_:]) for range_ in range(1, len(x))]
outputs:
['Zwi-schenabschlusses',
'Zwische-nabschlusses',
'Zwischen-abschlusses',
'Zwischenab-schlusses',
'Zwischenabschlus-ses']
Upvotes: 1
Reputation: 27588
Just stuffing the hyphen into any place...
for i in range(1, len(x)):
print(''.join(x[:i] + ['-'] + x[i:]))
Upvotes: 2
Reputation: 880
x = ['Zwi', 'sche', 'n', 'ab', 'schlus', 'ses']
combinedStr = ''.join(x)
output = []
slicing_counter = 0
for index in range(len(x) - 1):
len_substring = len(x[index])
slicing_counter = slicing_counter + len_substring
output.append(combinedStr[0:slicing_counter] + '-' + combinedStr[slicing_counter:])
print(output)
Upvotes: 0
Reputation: 10430
One liner in Python using list comprehension:
x = ['Zwi', 'sche', 'n', 'ab', 'schlus', 'ses']
print([("".join(x[0:i]) + "-" + "".join(x[i:])) for i in range(1,len(x))])
Output:
['Zwi-schenabschlusses', 'Zwische-nabschlusses', 'Zwischen-abschlusses', 'Zwischenab-schlusses', 'Zwischenabschlus-ses']
Upvotes: 1
Reputation: 211
Below code should work:
x = ['Zwi', 'sche', 'n', 'ab', 'schlus', 'ses']
modifiedX = []
for i in range(len(x) - 1):
newString = ""
for j in range(len(x)):
if j == i + 1:
newString += "-"
newString += x[j]
modifiedX.append(newString)
print(modifiedX)
Output:
['Zwi-schenabschlusses', 'Zwische-nabschlusses', 'Zwischen-abschlusses', 'Zwischenab-schlusses', 'Zwischenabschlus-ses']
Upvotes: 1
Reputation: 13401
you can do
x = ['Zwi', 'sche', 'n', 'ab', 'schlus', 'ses']
s = "".join(x)
# Zwischenabschlusses
y = []
cumlen = 0
for i in x[:-1]:
cumlen += len(i)
y.append(s[:cumlen]+"-"+s[cumlen:])
print(y)
Output:
['Zwi-schenabschlusses', 'Zwische-nabschlusses', 'Zwischen-abschlusses', 'Zwischenab-schlusses', 'Zwischenabschlus-ses']
Upvotes: 3