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

                              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

                              Bunad

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