Python Forum
concatenating 2 items at a time in a python list
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
concatenating 2 items at a time in a python list
#1
I have a list named data having the items shown as below.
a229f7d1148c27d5ff46cbf506f92a9e
3c73dc22ddaafa58346cc5241a78d509
c5ebe3eff60ef972fdd9a9d5e4762227
1c720ec8c2615529e1500d77020a1dc2
63d8e40d1c5aabbee5cf35a13a95b089
0994bcd4f5722e3ae8620a483b83abbf
06f628503dddc37956e586b9e537b3ae
a229f7d1148c27d5ff46cbf506f92a9e
3c73dc22ddaafa58346cc5241a78d509
f6ebd290be34c47ffc84f0a4f123112a
c5ebe3eff60ef972fdd9a9d5e4762227
1c720ec8c2615529e1500d77020a1dc2

I want to concatenate 2 items at a time for the entire list and copy that to an output file as below:
data[index+ 1] + data[index] so that i get the following items
3c73dc22ddaafa58346cc5241a78d509a229f7d1148c27d5ff46cbf506f92a9e
1c720ec8c2615529e1500d77020a1dc2c5ebe3eff60ef972fdd9a9d5e4762227
and so on till the end of the list.

ind = 0
while ind < len(data):
for i in range(int(len(data)/2)):
new_file.write("".join(data[(ind + 1): ind]))
new_file.write("\n")
ind += 2

But i am not getting the desired output. What am i doing wrong in the while loop?
Reply
#2
First problem is that your for loop seems extraneous. You're not using the index variable later.

Your while loop is close, but you're slicing it incorrectly. You want the later value first, you've written data[ind+1:ind]. But since the default step is 1 (a positive number), the slice never works. Better would be to write them as two different accesses: data[ind+1], data[ind] and combine them.

Tweaking it...

import string
data = string.ascii_lowercase[:8]

ind = 0
while ind < len(data):
    print("".join(data[ind+1] + data[ind]))
    ind += 2
Output:
ba dc fe hg
Reply
#3
(Oct-21-2020, 08:21 AM)bowlofred Wrote: First problem is that your for loop seems extraneous. You're not using the index variable later.

Your while loop is close, but you're slicing it incorrectly. You want the later value first, you've written data[ind+1:ind]. But since the default step is 1 (a positive number), the slice never works. Better would be to write them as two different accesses: data[ind+1], data[ind] and combine them.

Tweaking it...

import string
data = string.ascii_lowercase[:8]

ind = 0
while ind < len(data):
    print("".join(data[ind+1] + data[ind]))
    ind += 2
Output:
ba dc fe hg
I used the following code and it works..kindly check and let me know if its correct.
for i in range(0, len(data), 2):
next = data[i+1] + data[i]
Expected_z.append(next)
Reply
#4
data = ['a229f7d1148c27d5ff46cbf506f92a9e', '3c73dc22ddaafa58346cc5241a78d509',
        'c5ebe3eff60ef972fdd9a9d5e4762227', '1c720ec8c2615529e1500d77020a1dc2',
        '63d8e40d1c5aabbee5cf35a13a95b089', '0994bcd4f5722e3ae8620a483b83abbf', 
        '06f628503dddc37956e586b9e537b3ae', 'a229f7d1148c27d5ff46cbf506f92a9e', 
        '3c73dc22ddaafa58346cc5241a78d509', 'f6ebd290be34c47ffc84f0a4f123112a', 
        'c5ebe3eff60ef972fdd9a9d5e4762227', '1c720ec8c2615529e1500d77020a1dc2']

for item in zip(data[1:], data[:-1]):
    print(''.join(item))
if you want, you may use more-itertools package form pypi

import more_itertools
data = ['a229f7d1148c27d5ff46cbf506f92a9e', '3c73dc22ddaafa58346cc5241a78d509',
        'c5ebe3eff60ef972fdd9a9d5e4762227', '1c720ec8c2615529e1500d77020a1dc2',
        '63d8e40d1c5aabbee5cf35a13a95b089', '0994bcd4f5722e3ae8620a483b83abbf', 
        '06f628503dddc37956e586b9e537b3ae', 'a229f7d1148c27d5ff46cbf506f92a9e', 
        '3c73dc22ddaafa58346cc5241a78d509', 'f6ebd290be34c47ffc84f0a4f123112a', 
        'c5ebe3eff60ef972fdd9a9d5e4762227', '1c720ec8c2615529e1500d77020a1dc2']

for item in more_itertools.windowed(data, 2):
    print(''.join(item[::-1]))
DeaD_EyE likes this post
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How to parse and group hierarchical list items from an unindented string in Python? ann23fr 0 79 Yesterday, 01:16 PM
Last Post: ann23fr
  Why do I have to repeat items in list slices in order to make this work? Pythonica 7 1,257 May-22-2023, 10:39 PM
Last Post: ICanIBB
  Finding combinations of list of items (30 or so) LynnS 1 836 Jan-25-2023, 02:57 PM
Last Post: deanhystad
  Removal of items in .txt using python nanakochan 8 1,653 Sep-02-2022, 04:58 PM
Last Post: perfringo
  How to change UTC time to local time in Python DataFrame? SamKnight 2 1,527 Jul-28-2022, 08:23 AM
Last Post: Pedroski55
  For Word, Count in List (Counts.Items()) new_coder_231013 6 2,497 Jul-21-2022, 02:51 PM
Last Post: new_coder_231013
  How to get list of exactly 10 items? Mark17 1 2,403 May-26-2022, 01:37 PM
Last Post: Mark17
  how to assign items from a list to a dictionary CompleteNewb 3 1,535 Mar-19-2022, 01:25 AM
Last Post: deanhystad
  Reading list items without brackets and quotes jesse68 6 4,521 Jan-14-2022, 07:07 PM
Last Post: jesse68
Question How to gather specific second-level items from a list chatguy 2 1,516 Dec-17-2021, 05:05 PM
Last Post: chatguy

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020