Program to replace each string with an integer value in a given list of strings











up vote
0
down vote

favorite












Write a program to replace each string with an integer value in a given list of strings. The replacement integer value should be a sum of Ascci values of each character of the corresponding string.



list_rivers  =["Ganges", "Godavari", "Brahmaputra", "Narmada","Yamuna", "Mahanadi", "Kaveri", "Tapti"]


I tried the following which is correct but I want to optimize the code.



list_rivers  =["Ganges", "Godavari", "Brahmaputra", "Narmada", "Yamuna", "Mahanadi", "Kaveri", "Tapti"]
river = // empty list
for i in list_rivers:
num=0
for j in i:
num = num + ord(j)
river.append(num) // [597, 813, 1143, 692, 619, 787, 610, 514]


Can anyone help how to optimize the above code?

Thanks in advance.










share|improve this question




























    up vote
    0
    down vote

    favorite












    Write a program to replace each string with an integer value in a given list of strings. The replacement integer value should be a sum of Ascci values of each character of the corresponding string.



    list_rivers  =["Ganges", "Godavari", "Brahmaputra", "Narmada","Yamuna", "Mahanadi", "Kaveri", "Tapti"]


    I tried the following which is correct but I want to optimize the code.



    list_rivers  =["Ganges", "Godavari", "Brahmaputra", "Narmada", "Yamuna", "Mahanadi", "Kaveri", "Tapti"]
    river = // empty list
    for i in list_rivers:
    num=0
    for j in i:
    num = num + ord(j)
    river.append(num) // [597, 813, 1143, 692, 619, 787, 610, 514]


    Can anyone help how to optimize the above code?

    Thanks in advance.










    share|improve this question


























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      Write a program to replace each string with an integer value in a given list of strings. The replacement integer value should be a sum of Ascci values of each character of the corresponding string.



      list_rivers  =["Ganges", "Godavari", "Brahmaputra", "Narmada","Yamuna", "Mahanadi", "Kaveri", "Tapti"]


      I tried the following which is correct but I want to optimize the code.



      list_rivers  =["Ganges", "Godavari", "Brahmaputra", "Narmada", "Yamuna", "Mahanadi", "Kaveri", "Tapti"]
      river = // empty list
      for i in list_rivers:
      num=0
      for j in i:
      num = num + ord(j)
      river.append(num) // [597, 813, 1143, 692, 619, 787, 610, 514]


      Can anyone help how to optimize the above code?

      Thanks in advance.










      share|improve this question















      Write a program to replace each string with an integer value in a given list of strings. The replacement integer value should be a sum of Ascci values of each character of the corresponding string.



      list_rivers  =["Ganges", "Godavari", "Brahmaputra", "Narmada","Yamuna", "Mahanadi", "Kaveri", "Tapti"]


      I tried the following which is correct but I want to optimize the code.



      list_rivers  =["Ganges", "Godavari", "Brahmaputra", "Narmada", "Yamuna", "Mahanadi", "Kaveri", "Tapti"]
      river = // empty list
      for i in list_rivers:
      num=0
      for j in i:
      num = num + ord(j)
      river.append(num) // [597, 813, 1143, 692, 619, 787, 610, 514]


      Can anyone help how to optimize the above code?

      Thanks in advance.







      python python-3.x python-2.7






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 10 hours ago









      Brian Minton

      2,00712231




      2,00712231










      asked 10 hours ago









      ravi_user123

      132




      132
























          3 Answers
          3






          active

          oldest

          votes

















          up vote
          1
          down vote













          You can use list compréhension :



          [sum([ord(i) for i in word]) for word in list_rivers]


          it's equivalent to do



          tmp_1 = 
          for word in list_rivers:
          tmp_2 =
          for i in word:
          tmp_2.append(ord(i))
          tmp_1.append(sum(tmp_2))





          share|improve this answer




























            up vote
            0
            down vote













            As iElden mentions, you may use list comprehension here. Note that in this case, doing so does not necessarily optimize your code for efficiency.



            Your method:



            %%timeit
            river =
            for i in list_rivers:
            num=0
            for j in i:
            num = num + ord(j)
            river.append(num)

            # 100000 loops, best of 3: 6.57 µs per loop


            List comprehension:



            %%timeit
            result = [sum([ord(i) for i in word]) for word in list_rivers]

            # 100000 loops, best of 3: 9.37 µs per loop


            (Even slower) using map:



            %%timeit
            result = map(lambda x: sum([ord(letter) for letter in x]), list_rivers)

            # 100000 loops, best of 3: 10.3 µs per loop





            share|improve this answer






























              up vote
              0
              down vote













              It says write a program to do it, so here's a program to do so. Example output: [597, 813, 1143, 692, 619, 787, 610, 514]



              def string_to_int(string):
              retval = 0
              for c in string:
              retval += ord(c)
              return retval


              def main(data):
              retval =
              for item in data:
              retval.append(string_to_int(item))
              return retval


              if __name__ == "__main__":
              list_rivers = ["Ganges", "Godavari", "Brahmaputra", "Narmada", "Yamuna", "Mahanadi", "Kaveri", "Tapti"]
              results = main(list_rivers)
              print results





              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',
                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/3.0/"u003ecc by-sa 3.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%2f53398318%2fprogram-to-replace-each-string-with-an-integer-value-in-a-given-list-of-strings%23new-answer', 'question_page');
                }
                );

                Post as a guest















                Required, but never shown

























                3 Answers
                3






                active

                oldest

                votes








                3 Answers
                3






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes








                up vote
                1
                down vote













                You can use list compréhension :



                [sum([ord(i) for i in word]) for word in list_rivers]


                it's equivalent to do



                tmp_1 = 
                for word in list_rivers:
                tmp_2 =
                for i in word:
                tmp_2.append(ord(i))
                tmp_1.append(sum(tmp_2))





                share|improve this answer

























                  up vote
                  1
                  down vote













                  You can use list compréhension :



                  [sum([ord(i) for i in word]) for word in list_rivers]


                  it's equivalent to do



                  tmp_1 = 
                  for word in list_rivers:
                  tmp_2 =
                  for i in word:
                  tmp_2.append(ord(i))
                  tmp_1.append(sum(tmp_2))





                  share|improve this answer























                    up vote
                    1
                    down vote










                    up vote
                    1
                    down vote









                    You can use list compréhension :



                    [sum([ord(i) for i in word]) for word in list_rivers]


                    it's equivalent to do



                    tmp_1 = 
                    for word in list_rivers:
                    tmp_2 =
                    for i in word:
                    tmp_2.append(ord(i))
                    tmp_1.append(sum(tmp_2))





                    share|improve this answer












                    You can use list compréhension :



                    [sum([ord(i) for i in word]) for word in list_rivers]


                    it's equivalent to do



                    tmp_1 = 
                    for word in list_rivers:
                    tmp_2 =
                    for i in word:
                    tmp_2.append(ord(i))
                    tmp_1.append(sum(tmp_2))






                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered 10 hours ago









                    iElden

                    39313




                    39313
























                        up vote
                        0
                        down vote













                        As iElden mentions, you may use list comprehension here. Note that in this case, doing so does not necessarily optimize your code for efficiency.



                        Your method:



                        %%timeit
                        river =
                        for i in list_rivers:
                        num=0
                        for j in i:
                        num = num + ord(j)
                        river.append(num)

                        # 100000 loops, best of 3: 6.57 µs per loop


                        List comprehension:



                        %%timeit
                        result = [sum([ord(i) for i in word]) for word in list_rivers]

                        # 100000 loops, best of 3: 9.37 µs per loop


                        (Even slower) using map:



                        %%timeit
                        result = map(lambda x: sum([ord(letter) for letter in x]), list_rivers)

                        # 100000 loops, best of 3: 10.3 µs per loop





                        share|improve this answer



























                          up vote
                          0
                          down vote













                          As iElden mentions, you may use list comprehension here. Note that in this case, doing so does not necessarily optimize your code for efficiency.



                          Your method:



                          %%timeit
                          river =
                          for i in list_rivers:
                          num=0
                          for j in i:
                          num = num + ord(j)
                          river.append(num)

                          # 100000 loops, best of 3: 6.57 µs per loop


                          List comprehension:



                          %%timeit
                          result = [sum([ord(i) for i in word]) for word in list_rivers]

                          # 100000 loops, best of 3: 9.37 µs per loop


                          (Even slower) using map:



                          %%timeit
                          result = map(lambda x: sum([ord(letter) for letter in x]), list_rivers)

                          # 100000 loops, best of 3: 10.3 µs per loop





                          share|improve this answer

























                            up vote
                            0
                            down vote










                            up vote
                            0
                            down vote









                            As iElden mentions, you may use list comprehension here. Note that in this case, doing so does not necessarily optimize your code for efficiency.



                            Your method:



                            %%timeit
                            river =
                            for i in list_rivers:
                            num=0
                            for j in i:
                            num = num + ord(j)
                            river.append(num)

                            # 100000 loops, best of 3: 6.57 µs per loop


                            List comprehension:



                            %%timeit
                            result = [sum([ord(i) for i in word]) for word in list_rivers]

                            # 100000 loops, best of 3: 9.37 µs per loop


                            (Even slower) using map:



                            %%timeit
                            result = map(lambda x: sum([ord(letter) for letter in x]), list_rivers)

                            # 100000 loops, best of 3: 10.3 µs per loop





                            share|improve this answer














                            As iElden mentions, you may use list comprehension here. Note that in this case, doing so does not necessarily optimize your code for efficiency.



                            Your method:



                            %%timeit
                            river =
                            for i in list_rivers:
                            num=0
                            for j in i:
                            num = num + ord(j)
                            river.append(num)

                            # 100000 loops, best of 3: 6.57 µs per loop


                            List comprehension:



                            %%timeit
                            result = [sum([ord(i) for i in word]) for word in list_rivers]

                            # 100000 loops, best of 3: 9.37 µs per loop


                            (Even slower) using map:



                            %%timeit
                            result = map(lambda x: sum([ord(letter) for letter in x]), list_rivers)

                            # 100000 loops, best of 3: 10.3 µs per loop






                            share|improve this answer














                            share|improve this answer



                            share|improve this answer








                            edited 10 hours ago

























                            answered 10 hours ago









                            Wes Doyle

                            5951519




                            5951519






















                                up vote
                                0
                                down vote













                                It says write a program to do it, so here's a program to do so. Example output: [597, 813, 1143, 692, 619, 787, 610, 514]



                                def string_to_int(string):
                                retval = 0
                                for c in string:
                                retval += ord(c)
                                return retval


                                def main(data):
                                retval =
                                for item in data:
                                retval.append(string_to_int(item))
                                return retval


                                if __name__ == "__main__":
                                list_rivers = ["Ganges", "Godavari", "Brahmaputra", "Narmada", "Yamuna", "Mahanadi", "Kaveri", "Tapti"]
                                results = main(list_rivers)
                                print results





                                share|improve this answer

























                                  up vote
                                  0
                                  down vote













                                  It says write a program to do it, so here's a program to do so. Example output: [597, 813, 1143, 692, 619, 787, 610, 514]



                                  def string_to_int(string):
                                  retval = 0
                                  for c in string:
                                  retval += ord(c)
                                  return retval


                                  def main(data):
                                  retval =
                                  for item in data:
                                  retval.append(string_to_int(item))
                                  return retval


                                  if __name__ == "__main__":
                                  list_rivers = ["Ganges", "Godavari", "Brahmaputra", "Narmada", "Yamuna", "Mahanadi", "Kaveri", "Tapti"]
                                  results = main(list_rivers)
                                  print results





                                  share|improve this answer























                                    up vote
                                    0
                                    down vote










                                    up vote
                                    0
                                    down vote









                                    It says write a program to do it, so here's a program to do so. Example output: [597, 813, 1143, 692, 619, 787, 610, 514]



                                    def string_to_int(string):
                                    retval = 0
                                    for c in string:
                                    retval += ord(c)
                                    return retval


                                    def main(data):
                                    retval =
                                    for item in data:
                                    retval.append(string_to_int(item))
                                    return retval


                                    if __name__ == "__main__":
                                    list_rivers = ["Ganges", "Godavari", "Brahmaputra", "Narmada", "Yamuna", "Mahanadi", "Kaveri", "Tapti"]
                                    results = main(list_rivers)
                                    print results





                                    share|improve this answer












                                    It says write a program to do it, so here's a program to do so. Example output: [597, 813, 1143, 692, 619, 787, 610, 514]



                                    def string_to_int(string):
                                    retval = 0
                                    for c in string:
                                    retval += ord(c)
                                    return retval


                                    def main(data):
                                    retval =
                                    for item in data:
                                    retval.append(string_to_int(item))
                                    return retval


                                    if __name__ == "__main__":
                                    list_rivers = ["Ganges", "Godavari", "Brahmaputra", "Narmada", "Yamuna", "Mahanadi", "Kaveri", "Tapti"]
                                    results = main(list_rivers)
                                    print results






                                    share|improve this answer












                                    share|improve this answer



                                    share|improve this answer










                                    answered 8 hours ago









                                    13aal

                                    8661133




                                    8661133






























                                         

                                        draft saved


                                        draft discarded



















































                                         


                                        draft saved


                                        draft discarded














                                        StackExchange.ready(
                                        function () {
                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398318%2fprogram-to-replace-each-string-with-an-integer-value-in-a-given-list-of-strings%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

                                        Berounka

                                        Sphinx de Gizeh

                                        Different font size/position of beamer's navigation symbols template's content depending on regular/plain...