Adding strings in lists together





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{
margin-bottom:0;
}








12

















I want to transform the list ["A","B","A","A","B"] to the list ["AB","BA","AA","AB"].



I have tried to define a new list in which the first element is deleted and then add the strings of the lists together. After which I plan to delete the last element of the new list to get the result.



lista = sequences
lista.pop(0)
print(lista)

for x in range(sequences):
mc =sequences[x]+lista[x]


But all I get is




TypeError: 'list' object cannot be interpreted as an integer




Any help is welcome.



Edit : Thank you guys, all your solutions worked perfectly :)










share|improve this question



































    12

















    I want to transform the list ["A","B","A","A","B"] to the list ["AB","BA","AA","AB"].



    I have tried to define a new list in which the first element is deleted and then add the strings of the lists together. After which I plan to delete the last element of the new list to get the result.



    lista = sequences
    lista.pop(0)
    print(lista)

    for x in range(sequences):
    mc =sequences[x]+lista[x]


    But all I get is




    TypeError: 'list' object cannot be interpreted as an integer




    Any help is welcome.



    Edit : Thank you guys, all your solutions worked perfectly :)










    share|improve this question































      12












      12








      12


      2






      I want to transform the list ["A","B","A","A","B"] to the list ["AB","BA","AA","AB"].



      I have tried to define a new list in which the first element is deleted and then add the strings of the lists together. After which I plan to delete the last element of the new list to get the result.



      lista = sequences
      lista.pop(0)
      print(lista)

      for x in range(sequences):
      mc =sequences[x]+lista[x]


      But all I get is




      TypeError: 'list' object cannot be interpreted as an integer




      Any help is welcome.



      Edit : Thank you guys, all your solutions worked perfectly :)










      share|improve this question

















      I want to transform the list ["A","B","A","A","B"] to the list ["AB","BA","AA","AB"].



      I have tried to define a new list in which the first element is deleted and then add the strings of the lists together. After which I plan to delete the last element of the new list to get the result.



      lista = sequences
      lista.pop(0)
      print(lista)

      for x in range(sequences):
      mc =sequences[x]+lista[x]


      But all I get is




      TypeError: 'list' object cannot be interpreted as an integer




      Any help is welcome.



      Edit : Thank you guys, all your solutions worked perfectly :)







      python string list






      share|improve this question
















      share|improve this question













      share|improve this question




      share|improve this question








      edited May 28 at 16:18









      Olvin Roght

      3,1091 gold badge3 silver badges22 bronze badges




      3,1091 gold badge3 silver badges22 bronze badges










      asked May 28 at 11:30









      MattjoMattjo

      725 bronze badges




      725 bronze badges



























          4 Answers
          4






          active

          oldest

          votes


















          13


















          Best solution, using zip, cleverest:



          >>> l = ["A","B","A","A","B"]
          >>> [x + y for x, y in zip(l, l[1:])]
          ['AB', 'BA', 'AA', 'AB']
          >>>


          Or use this list comprehension:



          >>> l = ["A","B","A","A","B"]
          >>> [v + l[i + 1] for i, v in enumerate(l[:-1])]
          ['AB', 'BA', 'AA', 'AB']
          >>>





          share|improve this answer
























          • 1





            Swap your code examples, please. Your first variant is two times slower than second ;)

            – Olvin Roght
            May 28 at 12:42











          • Note: The issue addressed by @OlvinRoght is already handled.

            – Taegyung
            Jun 26 at 21:12



















          12


















          Use zip():



          >>> lst = ["A","B","A","A","B"]
          >>> [x + y for x, y in zip(lst, lst[1:])]
          ['AB', 'BA', 'AA', 'AB']





          share|improve this answer


































            6


















            You can use map():



            s = list(map(str.__add__, lst[:-1], lst[1:]))


            A bit better to use operator.concat() (thanks for advice, @MykolaZotko):



            import operator

            s = list(map(operator.concat, lst[:-1], lst[1:]))




            Upd.



            I've decided to do some tests on bigger data.



            import operator

            lst = [...] # list with 10000 random uppercase letters


            def test1():
            return list(map(operator.concat, lst[:-1], lst[1:]))


            def test2():
            return [x + y for x, y in zip(lst, lst[1:])]


            def test3():
            return [v + lst[i + 1] for i, v in enumerate(lst[:-1])]


            def test4():
            s = ''.join(lst)
            return [s[i:i + 2] for i in range(len(s) - 1)]


            if __name__ == '__main__':
            import timeit
            print(timeit.timeit("test1()", setup="from __main__ import test1, lst", number=10000))
            print(timeit.timeit("test2()", setup="from __main__ import test2, lst", number=10000))
            print(timeit.timeit("test3()", setup="from __main__ import test3, lst", number=10000))
            print(timeit.timeit("test4()", setup="from __main__ import test4, lst", number=10000))


            Results:





            1. Python 2:



              10.447159509
              11.529946446
              20.962497298000002
              20.515838672



            2. Python 3:



              10.370675522
              11.429417197
              20.836504865999995
              20.422865353



            On bigger data map() is a bit (~9%) faster, but there's no significant difference between test1() and test2()






            share|improve this answer
























            • 1





              You can use operator.add or operator.concat as well. Strange that map is faster. Normally map is slower than listcomp.

              – Mykola Zotko
              May 28 at 11:55













            • @MykolaZotko, it's not faster, few miliseconds slower, almost the same. I've done a mistake while copying data

              – Olvin Roght
              May 28 at 11:56






            • 1





              @OlvinRoght Would need to test on larger inputs to be sure

              – RoadRunner
              May 28 at 11:57








            • 1





              @RoadRunner, added some tests on bigger data.

              – Olvin Roght
              May 28 at 12:18



















            3


















            There are several issues in your original code:



            sequences = ["A","B","A","A","B"]
            lista = sequences
            lista.pop(0)
            print(lista)

            for x in range(sequences):
            mc =sequences[x]+lista[x]


            Firstly, the statement lista = sequences does not make a copy of sequences. Instead, lista and sequences become two different names for the same list. What you do using one name also happens to the other. lista.pop(0) is the same as sequences.pop(0). If you want a copy, then import the copy library.



            import copy

            sequences = ["A","B","A","A","B"]
            lista = copy.copy(sequences)
            lista.pop(0)
            print(lista)

            for x in range(sequences):
            mc =sequences[x]+lista[x]


            Secondly, your statement range(sequences) is incorrect. The range() function accepts integers as input, not lists. That's what gave you TypeError: 'list' object cannot be interpreted as an integer



            # VALID
            range(5)
            range(3)
            range(10)

            # INVALID
            range(["A","B","A"])
            range(["eyes", "nose", "tail"])


            sequences is a list. You want range(len(sequences)) notrange(sequences)



            In the end, we can modify your original code to work:



            import copy

            sequences = ["A","B","A","A","B"]
            lista = copy.copy(sequences)
            lista.pop(0)
            print(lista) # prints ["B","A","A","B"]

            mc = list()
            for x in range(len(lista)):
            mc.append(lista[x] + sequences[x + 1])





            share|improve this answer




























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });















              draft saved

              draft discarded
















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f56341236%2fadding-strings-in-lists-together%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown


























              4 Answers
              4






              active

              oldest

              votes








              4 Answers
              4






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              13


















              Best solution, using zip, cleverest:



              >>> l = ["A","B","A","A","B"]
              >>> [x + y for x, y in zip(l, l[1:])]
              ['AB', 'BA', 'AA', 'AB']
              >>>


              Or use this list comprehension:



              >>> l = ["A","B","A","A","B"]
              >>> [v + l[i + 1] for i, v in enumerate(l[:-1])]
              ['AB', 'BA', 'AA', 'AB']
              >>>





              share|improve this answer
























              • 1





                Swap your code examples, please. Your first variant is two times slower than second ;)

                – Olvin Roght
                May 28 at 12:42











              • Note: The issue addressed by @OlvinRoght is already handled.

                – Taegyung
                Jun 26 at 21:12
















              13


















              Best solution, using zip, cleverest:



              >>> l = ["A","B","A","A","B"]
              >>> [x + y for x, y in zip(l, l[1:])]
              ['AB', 'BA', 'AA', 'AB']
              >>>


              Or use this list comprehension:



              >>> l = ["A","B","A","A","B"]
              >>> [v + l[i + 1] for i, v in enumerate(l[:-1])]
              ['AB', 'BA', 'AA', 'AB']
              >>>





              share|improve this answer
























              • 1





                Swap your code examples, please. Your first variant is two times slower than second ;)

                – Olvin Roght
                May 28 at 12:42











              • Note: The issue addressed by @OlvinRoght is already handled.

                – Taegyung
                Jun 26 at 21:12














              13














              13










              13









              Best solution, using zip, cleverest:



              >>> l = ["A","B","A","A","B"]
              >>> [x + y for x, y in zip(l, l[1:])]
              ['AB', 'BA', 'AA', 'AB']
              >>>


              Or use this list comprehension:



              >>> l = ["A","B","A","A","B"]
              >>> [v + l[i + 1] for i, v in enumerate(l[:-1])]
              ['AB', 'BA', 'AA', 'AB']
              >>>





              share|improve this answer
















              Best solution, using zip, cleverest:



              >>> l = ["A","B","A","A","B"]
              >>> [x + y for x, y in zip(l, l[1:])]
              ['AB', 'BA', 'AA', 'AB']
              >>>


              Or use this list comprehension:



              >>> l = ["A","B","A","A","B"]
              >>> [v + l[i + 1] for i, v in enumerate(l[:-1])]
              ['AB', 'BA', 'AA', 'AB']
              >>>






              share|improve this answer















              share|improve this answer




              share|improve this answer








              edited May 28 at 12:43

























              answered May 28 at 11:31









              U10-ForwardU10-Forward

              28.6k5 gold badges25 silver badges50 bronze badges




              28.6k5 gold badges25 silver badges50 bronze badges











              • 1





                Swap your code examples, please. Your first variant is two times slower than second ;)

                – Olvin Roght
                May 28 at 12:42











              • Note: The issue addressed by @OlvinRoght is already handled.

                – Taegyung
                Jun 26 at 21:12














              • 1





                Swap your code examples, please. Your first variant is two times slower than second ;)

                – Olvin Roght
                May 28 at 12:42











              • Note: The issue addressed by @OlvinRoght is already handled.

                – Taegyung
                Jun 26 at 21:12








              1




              1





              Swap your code examples, please. Your first variant is two times slower than second ;)

              – Olvin Roght
              May 28 at 12:42





              Swap your code examples, please. Your first variant is two times slower than second ;)

              – Olvin Roght
              May 28 at 12:42













              Note: The issue addressed by @OlvinRoght is already handled.

              – Taegyung
              Jun 26 at 21:12





              Note: The issue addressed by @OlvinRoght is already handled.

              – Taegyung
              Jun 26 at 21:12













              12


















              Use zip():



              >>> lst = ["A","B","A","A","B"]
              >>> [x + y for x, y in zip(lst, lst[1:])]
              ['AB', 'BA', 'AA', 'AB']





              share|improve this answer































                12


















                Use zip():



                >>> lst = ["A","B","A","A","B"]
                >>> [x + y for x, y in zip(lst, lst[1:])]
                ['AB', 'BA', 'AA', 'AB']





                share|improve this answer





























                  12














                  12










                  12









                  Use zip():



                  >>> lst = ["A","B","A","A","B"]
                  >>> [x + y for x, y in zip(lst, lst[1:])]
                  ['AB', 'BA', 'AA', 'AB']





                  share|improve this answer














                  Use zip():



                  >>> lst = ["A","B","A","A","B"]
                  >>> [x + y for x, y in zip(lst, lst[1:])]
                  ['AB', 'BA', 'AA', 'AB']






                  share|improve this answer













                  share|improve this answer




                  share|improve this answer










                  answered May 28 at 11:32









                  RoadRunnerRoadRunner

                  12.8k3 gold badges16 silver badges42 bronze badges




                  12.8k3 gold badges16 silver badges42 bronze badges


























                      6


















                      You can use map():



                      s = list(map(str.__add__, lst[:-1], lst[1:]))


                      A bit better to use operator.concat() (thanks for advice, @MykolaZotko):



                      import operator

                      s = list(map(operator.concat, lst[:-1], lst[1:]))




                      Upd.



                      I've decided to do some tests on bigger data.



                      import operator

                      lst = [...] # list with 10000 random uppercase letters


                      def test1():
                      return list(map(operator.concat, lst[:-1], lst[1:]))


                      def test2():
                      return [x + y for x, y in zip(lst, lst[1:])]


                      def test3():
                      return [v + lst[i + 1] for i, v in enumerate(lst[:-1])]


                      def test4():
                      s = ''.join(lst)
                      return [s[i:i + 2] for i in range(len(s) - 1)]


                      if __name__ == '__main__':
                      import timeit
                      print(timeit.timeit("test1()", setup="from __main__ import test1, lst", number=10000))
                      print(timeit.timeit("test2()", setup="from __main__ import test2, lst", number=10000))
                      print(timeit.timeit("test3()", setup="from __main__ import test3, lst", number=10000))
                      print(timeit.timeit("test4()", setup="from __main__ import test4, lst", number=10000))


                      Results:





                      1. Python 2:



                        10.447159509
                        11.529946446
                        20.962497298000002
                        20.515838672



                      2. Python 3:



                        10.370675522
                        11.429417197
                        20.836504865999995
                        20.422865353



                      On bigger data map() is a bit (~9%) faster, but there's no significant difference between test1() and test2()






                      share|improve this answer
























                      • 1





                        You can use operator.add or operator.concat as well. Strange that map is faster. Normally map is slower than listcomp.

                        – Mykola Zotko
                        May 28 at 11:55













                      • @MykolaZotko, it's not faster, few miliseconds slower, almost the same. I've done a mistake while copying data

                        – Olvin Roght
                        May 28 at 11:56






                      • 1





                        @OlvinRoght Would need to test on larger inputs to be sure

                        – RoadRunner
                        May 28 at 11:57








                      • 1





                        @RoadRunner, added some tests on bigger data.

                        – Olvin Roght
                        May 28 at 12:18
















                      6


















                      You can use map():



                      s = list(map(str.__add__, lst[:-1], lst[1:]))


                      A bit better to use operator.concat() (thanks for advice, @MykolaZotko):



                      import operator

                      s = list(map(operator.concat, lst[:-1], lst[1:]))




                      Upd.



                      I've decided to do some tests on bigger data.



                      import operator

                      lst = [...] # list with 10000 random uppercase letters


                      def test1():
                      return list(map(operator.concat, lst[:-1], lst[1:]))


                      def test2():
                      return [x + y for x, y in zip(lst, lst[1:])]


                      def test3():
                      return [v + lst[i + 1] for i, v in enumerate(lst[:-1])]


                      def test4():
                      s = ''.join(lst)
                      return [s[i:i + 2] for i in range(len(s) - 1)]


                      if __name__ == '__main__':
                      import timeit
                      print(timeit.timeit("test1()", setup="from __main__ import test1, lst", number=10000))
                      print(timeit.timeit("test2()", setup="from __main__ import test2, lst", number=10000))
                      print(timeit.timeit("test3()", setup="from __main__ import test3, lst", number=10000))
                      print(timeit.timeit("test4()", setup="from __main__ import test4, lst", number=10000))


                      Results:





                      1. Python 2:



                        10.447159509
                        11.529946446
                        20.962497298000002
                        20.515838672



                      2. Python 3:



                        10.370675522
                        11.429417197
                        20.836504865999995
                        20.422865353



                      On bigger data map() is a bit (~9%) faster, but there's no significant difference between test1() and test2()






                      share|improve this answer
























                      • 1





                        You can use operator.add or operator.concat as well. Strange that map is faster. Normally map is slower than listcomp.

                        – Mykola Zotko
                        May 28 at 11:55













                      • @MykolaZotko, it's not faster, few miliseconds slower, almost the same. I've done a mistake while copying data

                        – Olvin Roght
                        May 28 at 11:56






                      • 1





                        @OlvinRoght Would need to test on larger inputs to be sure

                        – RoadRunner
                        May 28 at 11:57








                      • 1





                        @RoadRunner, added some tests on bigger data.

                        – Olvin Roght
                        May 28 at 12:18














                      6














                      6










                      6









                      You can use map():



                      s = list(map(str.__add__, lst[:-1], lst[1:]))


                      A bit better to use operator.concat() (thanks for advice, @MykolaZotko):



                      import operator

                      s = list(map(operator.concat, lst[:-1], lst[1:]))




                      Upd.



                      I've decided to do some tests on bigger data.



                      import operator

                      lst = [...] # list with 10000 random uppercase letters


                      def test1():
                      return list(map(operator.concat, lst[:-1], lst[1:]))


                      def test2():
                      return [x + y for x, y in zip(lst, lst[1:])]


                      def test3():
                      return [v + lst[i + 1] for i, v in enumerate(lst[:-1])]


                      def test4():
                      s = ''.join(lst)
                      return [s[i:i + 2] for i in range(len(s) - 1)]


                      if __name__ == '__main__':
                      import timeit
                      print(timeit.timeit("test1()", setup="from __main__ import test1, lst", number=10000))
                      print(timeit.timeit("test2()", setup="from __main__ import test2, lst", number=10000))
                      print(timeit.timeit("test3()", setup="from __main__ import test3, lst", number=10000))
                      print(timeit.timeit("test4()", setup="from __main__ import test4, lst", number=10000))


                      Results:





                      1. Python 2:



                        10.447159509
                        11.529946446
                        20.962497298000002
                        20.515838672



                      2. Python 3:



                        10.370675522
                        11.429417197
                        20.836504865999995
                        20.422865353



                      On bigger data map() is a bit (~9%) faster, but there's no significant difference between test1() and test2()






                      share|improve this answer
















                      You can use map():



                      s = list(map(str.__add__, lst[:-1], lst[1:]))


                      A bit better to use operator.concat() (thanks for advice, @MykolaZotko):



                      import operator

                      s = list(map(operator.concat, lst[:-1], lst[1:]))




                      Upd.



                      I've decided to do some tests on bigger data.



                      import operator

                      lst = [...] # list with 10000 random uppercase letters


                      def test1():
                      return list(map(operator.concat, lst[:-1], lst[1:]))


                      def test2():
                      return [x + y for x, y in zip(lst, lst[1:])]


                      def test3():
                      return [v + lst[i + 1] for i, v in enumerate(lst[:-1])]


                      def test4():
                      s = ''.join(lst)
                      return [s[i:i + 2] for i in range(len(s) - 1)]


                      if __name__ == '__main__':
                      import timeit
                      print(timeit.timeit("test1()", setup="from __main__ import test1, lst", number=10000))
                      print(timeit.timeit("test2()", setup="from __main__ import test2, lst", number=10000))
                      print(timeit.timeit("test3()", setup="from __main__ import test3, lst", number=10000))
                      print(timeit.timeit("test4()", setup="from __main__ import test4, lst", number=10000))


                      Results:





                      1. Python 2:



                        10.447159509
                        11.529946446
                        20.962497298000002
                        20.515838672



                      2. Python 3:



                        10.370675522
                        11.429417197
                        20.836504865999995
                        20.422865353



                      On bigger data map() is a bit (~9%) faster, but there's no significant difference between test1() and test2()







                      share|improve this answer















                      share|improve this answer




                      share|improve this answer








                      edited May 28 at 12:38

























                      answered May 28 at 11:40









                      Olvin RoghtOlvin Roght

                      3,1091 gold badge3 silver badges22 bronze badges




                      3,1091 gold badge3 silver badges22 bronze badges











                      • 1





                        You can use operator.add or operator.concat as well. Strange that map is faster. Normally map is slower than listcomp.

                        – Mykola Zotko
                        May 28 at 11:55













                      • @MykolaZotko, it's not faster, few miliseconds slower, almost the same. I've done a mistake while copying data

                        – Olvin Roght
                        May 28 at 11:56






                      • 1





                        @OlvinRoght Would need to test on larger inputs to be sure

                        – RoadRunner
                        May 28 at 11:57








                      • 1





                        @RoadRunner, added some tests on bigger data.

                        – Olvin Roght
                        May 28 at 12:18














                      • 1





                        You can use operator.add or operator.concat as well. Strange that map is faster. Normally map is slower than listcomp.

                        – Mykola Zotko
                        May 28 at 11:55













                      • @MykolaZotko, it's not faster, few miliseconds slower, almost the same. I've done a mistake while copying data

                        – Olvin Roght
                        May 28 at 11:56






                      • 1





                        @OlvinRoght Would need to test on larger inputs to be sure

                        – RoadRunner
                        May 28 at 11:57








                      • 1





                        @RoadRunner, added some tests on bigger data.

                        – Olvin Roght
                        May 28 at 12:18








                      1




                      1





                      You can use operator.add or operator.concat as well. Strange that map is faster. Normally map is slower than listcomp.

                      – Mykola Zotko
                      May 28 at 11:55







                      You can use operator.add or operator.concat as well. Strange that map is faster. Normally map is slower than listcomp.

                      – Mykola Zotko
                      May 28 at 11:55















                      @MykolaZotko, it's not faster, few miliseconds slower, almost the same. I've done a mistake while copying data

                      – Olvin Roght
                      May 28 at 11:56





                      @MykolaZotko, it's not faster, few miliseconds slower, almost the same. I've done a mistake while copying data

                      – Olvin Roght
                      May 28 at 11:56




                      1




                      1





                      @OlvinRoght Would need to test on larger inputs to be sure

                      – RoadRunner
                      May 28 at 11:57







                      @OlvinRoght Would need to test on larger inputs to be sure

                      – RoadRunner
                      May 28 at 11:57






                      1




                      1





                      @RoadRunner, added some tests on bigger data.

                      – Olvin Roght
                      May 28 at 12:18





                      @RoadRunner, added some tests on bigger data.

                      – Olvin Roght
                      May 28 at 12:18











                      3


















                      There are several issues in your original code:



                      sequences = ["A","B","A","A","B"]
                      lista = sequences
                      lista.pop(0)
                      print(lista)

                      for x in range(sequences):
                      mc =sequences[x]+lista[x]


                      Firstly, the statement lista = sequences does not make a copy of sequences. Instead, lista and sequences become two different names for the same list. What you do using one name also happens to the other. lista.pop(0) is the same as sequences.pop(0). If you want a copy, then import the copy library.



                      import copy

                      sequences = ["A","B","A","A","B"]
                      lista = copy.copy(sequences)
                      lista.pop(0)
                      print(lista)

                      for x in range(sequences):
                      mc =sequences[x]+lista[x]


                      Secondly, your statement range(sequences) is incorrect. The range() function accepts integers as input, not lists. That's what gave you TypeError: 'list' object cannot be interpreted as an integer



                      # VALID
                      range(5)
                      range(3)
                      range(10)

                      # INVALID
                      range(["A","B","A"])
                      range(["eyes", "nose", "tail"])


                      sequences is a list. You want range(len(sequences)) notrange(sequences)



                      In the end, we can modify your original code to work:



                      import copy

                      sequences = ["A","B","A","A","B"]
                      lista = copy.copy(sequences)
                      lista.pop(0)
                      print(lista) # prints ["B","A","A","B"]

                      mc = list()
                      for x in range(len(lista)):
                      mc.append(lista[x] + sequences[x + 1])





                      share|improve this answer































                        3


















                        There are several issues in your original code:



                        sequences = ["A","B","A","A","B"]
                        lista = sequences
                        lista.pop(0)
                        print(lista)

                        for x in range(sequences):
                        mc =sequences[x]+lista[x]


                        Firstly, the statement lista = sequences does not make a copy of sequences. Instead, lista and sequences become two different names for the same list. What you do using one name also happens to the other. lista.pop(0) is the same as sequences.pop(0). If you want a copy, then import the copy library.



                        import copy

                        sequences = ["A","B","A","A","B"]
                        lista = copy.copy(sequences)
                        lista.pop(0)
                        print(lista)

                        for x in range(sequences):
                        mc =sequences[x]+lista[x]


                        Secondly, your statement range(sequences) is incorrect. The range() function accepts integers as input, not lists. That's what gave you TypeError: 'list' object cannot be interpreted as an integer



                        # VALID
                        range(5)
                        range(3)
                        range(10)

                        # INVALID
                        range(["A","B","A"])
                        range(["eyes", "nose", "tail"])


                        sequences is a list. You want range(len(sequences)) notrange(sequences)



                        In the end, we can modify your original code to work:



                        import copy

                        sequences = ["A","B","A","A","B"]
                        lista = copy.copy(sequences)
                        lista.pop(0)
                        print(lista) # prints ["B","A","A","B"]

                        mc = list()
                        for x in range(len(lista)):
                        mc.append(lista[x] + sequences[x + 1])





                        share|improve this answer





























                          3














                          3










                          3









                          There are several issues in your original code:



                          sequences = ["A","B","A","A","B"]
                          lista = sequences
                          lista.pop(0)
                          print(lista)

                          for x in range(sequences):
                          mc =sequences[x]+lista[x]


                          Firstly, the statement lista = sequences does not make a copy of sequences. Instead, lista and sequences become two different names for the same list. What you do using one name also happens to the other. lista.pop(0) is the same as sequences.pop(0). If you want a copy, then import the copy library.



                          import copy

                          sequences = ["A","B","A","A","B"]
                          lista = copy.copy(sequences)
                          lista.pop(0)
                          print(lista)

                          for x in range(sequences):
                          mc =sequences[x]+lista[x]


                          Secondly, your statement range(sequences) is incorrect. The range() function accepts integers as input, not lists. That's what gave you TypeError: 'list' object cannot be interpreted as an integer



                          # VALID
                          range(5)
                          range(3)
                          range(10)

                          # INVALID
                          range(["A","B","A"])
                          range(["eyes", "nose", "tail"])


                          sequences is a list. You want range(len(sequences)) notrange(sequences)



                          In the end, we can modify your original code to work:



                          import copy

                          sequences = ["A","B","A","A","B"]
                          lista = copy.copy(sequences)
                          lista.pop(0)
                          print(lista) # prints ["B","A","A","B"]

                          mc = list()
                          for x in range(len(lista)):
                          mc.append(lista[x] + sequences[x + 1])





                          share|improve this answer














                          There are several issues in your original code:



                          sequences = ["A","B","A","A","B"]
                          lista = sequences
                          lista.pop(0)
                          print(lista)

                          for x in range(sequences):
                          mc =sequences[x]+lista[x]


                          Firstly, the statement lista = sequences does not make a copy of sequences. Instead, lista and sequences become two different names for the same list. What you do using one name also happens to the other. lista.pop(0) is the same as sequences.pop(0). If you want a copy, then import the copy library.



                          import copy

                          sequences = ["A","B","A","A","B"]
                          lista = copy.copy(sequences)
                          lista.pop(0)
                          print(lista)

                          for x in range(sequences):
                          mc =sequences[x]+lista[x]


                          Secondly, your statement range(sequences) is incorrect. The range() function accepts integers as input, not lists. That's what gave you TypeError: 'list' object cannot be interpreted as an integer



                          # VALID
                          range(5)
                          range(3)
                          range(10)

                          # INVALID
                          range(["A","B","A"])
                          range(["eyes", "nose", "tail"])


                          sequences is a list. You want range(len(sequences)) notrange(sequences)



                          In the end, we can modify your original code to work:



                          import copy

                          sequences = ["A","B","A","A","B"]
                          lista = copy.copy(sequences)
                          lista.pop(0)
                          print(lista) # prints ["B","A","A","B"]

                          mc = list()
                          for x in range(len(lista)):
                          mc.append(lista[x] + sequences[x + 1])






                          share|improve this answer













                          share|improve this answer




                          share|improve this answer










                          answered May 28 at 20:05









                          Toothpick AnemoneToothpick Anemone

                          5612 silver badges19 bronze badges




                          5612 silver badges19 bronze badges


































                              draft saved

                              draft discarded



















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f56341236%2fadding-strings-in-lists-together%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown









                              Popular posts from this blog

                              Færeyskur hestur Heimild | Tengill | Tilvísanir | LeiðsagnarvalRossið - síða um færeyska hrossið á færeyskuGott ár hjá færeyska hestinum

                              He _____ here since 1970 . Answer needed [closed]What does “since he was so high” mean?Meaning of “catch birds for”?How do I ensure “since” takes the meaning I want?“Who cares here” meaningWhat does “right round toward” mean?the time tense (had now been detected)What does the phrase “ring around the roses” mean here?Correct usage of “visited upon”Meaning of “foiled rail sabotage bid”It was the third time I had gone to Rome or It is the third time I had been to Rome

                              Slayer Innehåll Historia | Stil, komposition och lyrik | Bandets betydelse och framgångar | Sidoprojekt och samarbeten | Kontroverser | Medlemmar | Utmärkelser och nomineringar | Turnéer och festivaler | Diskografi | Referenser | Externa länkar | Navigeringsmenywww.slayer.net”Metal Massacre vol. 1””Metal Massacre vol. 3””Metal Massacre Volume III””Show No Mercy””Haunting the Chapel””Live Undead””Hell Awaits””Reign in Blood””Reign in Blood””Gold & Platinum – Reign in Blood””Golden Gods Awards Winners”originalet”Kerrang! Hall Of Fame””Slayer Looks Back On 37-Year Career In New Video Series: Part Two””South of Heaven””Gold & Platinum – South of Heaven””Seasons in the Abyss””Gold & Platinum - Seasons in the Abyss””Divine Intervention””Divine Intervention - Release group by Slayer””Gold & Platinum - Divine Intervention””Live Intrusion””Undisputed Attitude””Abolish Government/Superficial Love””Release “Slatanic Slaughter: A Tribute to Slayer” by Various Artists””Diabolus in Musica””Soundtrack to the Apocalypse””God Hates Us All””Systematic - Relationships””War at the Warfield””Gold & Platinum - War at the Warfield””Soundtrack to the Apocalypse””Gold & Platinum - Still Reigning””Metallica, Slayer, Iron Mauden Among Winners At Metal Hammer Awards””Eternal Pyre””Eternal Pyre - Slayer release group””Eternal Pyre””Metal Storm Awards 2006””Kerrang! Hall Of Fame””Slayer Wins 'Best Metal' Grammy Award””Slayer Guitarist Jeff Hanneman Dies””Bullet-For My Valentine booed at Metal Hammer Golden Gods Awards””Unholy Aliance””The End Of Slayer?””Slayer: We Could Thrash Out Two More Albums If We're Fast Enough...””'The Unholy Alliance: Chapter III' UK Dates Added”originalet”Megadeth And Slayer To Co-Headline 'Canadian Carnage' Trek”originalet”World Painted Blood””Release “World Painted Blood” by Slayer””Metallica Heading To Cinemas””Slayer, Megadeth To Join Forces For 'European Carnage' Tour - Dec. 18, 2010”originalet”Slayer's Hanneman Contracts Acute Infection; Band To Bring In Guest Guitarist””Cannibal Corpse's Pat O'Brien Will Step In As Slayer's Guest Guitarist”originalet”Slayer’s Jeff Hanneman Dead at 49””Dave Lombardo Says He Made Only $67,000 In 2011 While Touring With Slayer””Slayer: We Do Not Agree With Dave Lombardo's Substance Or Timeline Of Events””Slayer Welcomes Drummer Paul Bostaph Back To The Fold””Slayer Hope to Unveil Never-Before-Heard Jeff Hanneman Material on Next Album””Slayer Debut New Song 'Implode' During Surprise Golden Gods Appearance””Release group Repentless by Slayer””Repentless - Slayer - Credits””Slayer””Metal Storm Awards 2015””Slayer - to release comic book "Repentless #1"””Slayer To Release 'Repentless' 6.66" Vinyl Box Set””BREAKING NEWS: Slayer Announce Farewell Tour””Slayer Recruit Lamb of God, Anthrax, Behemoth + Testament for Final Tour””Slayer lägger ner efter 37 år””Slayer Announces Second North American Leg Of 'Final' Tour””Final World Tour””Slayer Announces Final European Tour With Lamb of God, Anthrax And Obituary””Slayer To Tour Europe With Lamb of God, Anthrax And Obituary””Slayer To Play 'Last French Show Ever' At Next Year's Hellfst””Slayer's Final World Tour Will Extend Into 2019””Death Angel's Rob Cavestany On Slayer's 'Farewell' Tour: 'Some Of Us Could See This Coming'””Testament Has No Plans To Retire Anytime Soon, Says Chuck Billy””Anthrax's Scott Ian On Slayer's 'Farewell' Tour Plans: 'I Was Surprised And I Wasn't Surprised'””Slayer””Slayer's Morbid Schlock””Review/Rock; For Slayer, the Mania Is the Message””Slayer - Biography””Slayer - Reign In Blood”originalet”Dave Lombardo””An exclusive oral history of Slayer”originalet”Exclusive! Interview With Slayer Guitarist Jeff Hanneman”originalet”Thinking Out Loud: Slayer's Kerry King on hair metal, Satan and being polite””Slayer Lyrics””Slayer - Biography””Most influential artists for extreme metal music””Slayer - Reign in Blood””Slayer guitarist Jeff Hanneman dies aged 49””Slatanic Slaughter: A Tribute to Slayer””Gateway to Hell: A Tribute to Slayer””Covered In Blood””Slayer: The Origins of Thrash in San Francisco, CA.””Why They Rule - #6 Slayer”originalet”Guitar World's 100 Greatest Heavy Metal Guitarists Of All Time”originalet”The fans have spoken: Slayer comes out on top in readers' polls”originalet”Tribute to Jeff Hanneman (1964-2013)””Lamb Of God Frontman: We Sound Like A Slayer Rip-Off””BEHEMOTH Frontman Pays Tribute To SLAYER's JEFF HANNEMAN””Slayer, Hatebreed Doing Double Duty On This Year's Ozzfest””System of a Down””Lacuna Coil’s Andrea Ferro Talks Influences, Skateboarding, Band Origins + More””Slayer - Reign in Blood””Into The Lungs of Hell””Slayer rules - en utställning om fans””Slayer and Their Fans Slashed Through a No-Holds-Barred Night at Gas Monkey””Home””Slayer””Gold & Platinum - The Big 4 Live from Sofia, Bulgaria””Exclusive! Interview With Slayer Guitarist Kerry King””2008-02-23: Wiltern, Los Angeles, CA, USA””Slayer's Kerry King To Perform With Megadeth Tonight! - Oct. 21, 2010”originalet”Dave Lombardo - Biography”Slayer Case DismissedArkiveradUltimate Classic Rock: Slayer guitarist Jeff Hanneman dead at 49.”Slayer: "We could never do any thing like Some Kind Of Monster..."””Cannibal Corpse'S Pat O'Brien Will Step In As Slayer'S Guest Guitarist | The Official Slayer Site”originalet”Slayer Wins 'Best Metal' Grammy Award””Slayer Guitarist Jeff Hanneman Dies””Kerrang! Awards 2006 Blog: Kerrang! Hall Of Fame””Kerrang! Awards 2013: Kerrang! Legend”originalet”Metallica, Slayer, Iron Maien Among Winners At Metal Hammer Awards””Metal Hammer Golden Gods Awards””Bullet For My Valentine Booed At Metal Hammer Golden Gods Awards””Metal Storm Awards 2006””Metal Storm Awards 2015””Slayer's Concert History””Slayer - Relationships””Slayer - Releases”Slayers officiella webbplatsSlayer på MusicBrainzOfficiell webbplatsSlayerSlayerr1373445760000 0001 1540 47353068615-5086262726cb13906545x(data)6033143kn20030215029