Question: I have a list in python and i need to write the output to csv. list is :

```
>>>final_name[0] 
[['Serbs'], ['Joachim RA'], [''], ['Mr RA'], [''], ['Albanian'], ['Boris Tadic', 'Serbia']]

>>> final_name[1]
 [['Philippine', 'Gloria Macapagal Arroyo', 'Mitag'], ['Anthony Golez'], ['Golez'], [''], ['Golez'], ['']]

```

I need the output in csv as:

```
1 Serbs,Joachim RA,Mr RA,Albanian,...
2 Philippine,Gloria Macapagal,...  

```

I have tried everything, by converting to string,etc...but i am not able to get it done..

How could this be done. thank you

Answer: 
Why?

Because this gives the Operating System a way to securely manage memory.

Why is secure memory management necessary?

Imagine if there was no logical addressing. All processes were given direct access to physical addresses. A multi-process OS runs several different programs simultaneously. Imagine you are editing an important letter in MS Word while listening to music on YouTube on a very recently released browser. The browser is buggy and writes bogus values to a range of physical addresses that were being used by the Word program to store the edits of your letter. All of that information is corrupt!

Highly undesirable situation.

How can the OS prevent this?

Maintain a mapping of physical addresses allocated to each process and make sure one process cannot access the memory allocated to another process!

Clearly, having actual physical addresses exposed to programs is not a good idea. Since memory is then handled totally by the OS, we need an abstraction that we can provide to processes with a simple API that would make it seem that the process was dealing with physical memory, but all allocations would actually be handled by the OS.

Here comes virtual memory!
The binding of instruction and data of a process to memory is done at compile time, load time or at execution time. Logical address comes into picture, only if the process moved during its **execution time** from one memory segment to another. logical address is the address of a process, before any relocation happens(memory address = 10). Once relocation happened for a process(moved to memory address = 100), just to redirect the cpu to correct memory location=> memory management unit(MMU), maintains the difference between relocated address and original address(100-10 = 90) in relocation register(base register acts as relocation register here) . once CPU have to access data in memory address 10, MMU add 90(value in relocation register) to the address, and fetch data from memory address 100.