Обход списка в обратном порядке в Python

Пожалуйста, используйте приведенный ниже код. Это самый простой вариант в моем анализе. Надеюсь, вам понравится:

import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;

public class MostRepeatingWord {

    String mostRepeatedWord(String s){
        String[] splitted = s.split(" ");
        List<String> listString = Arrays.asList(splitted);
        Set<String> setString = new HashSet<String>(listString);
        int count = 0;
        int maxCount = 1;
        String maxRepeated = null;
        for(String inp: setString){
            count = Collections.frequency(listString, inp);
            if(count > maxCount){
                maxCount = count;
                maxRepeated = inp;
            }
        }
        return maxRepeated;
    }
    public static void main(String[] args) 
    {       
        System.out.println("Enter The Sentence: ");
        Scanner s = new Scanner(System.in);
        String input = s.nextLine();
        MostRepeatingWord mrw = new MostRepeatingWord();
        System.out.println("Most repeated word is: " + mrw.mostRepeatedWord(input));

    }
}
605
задан mtt2p 3 March 2017 в 15:24
поделиться

7 ответов

Используйте встроенное reversed() функция:

>>> a = ["foo", "bar", "baz"]
>>> for i in reversed(a):
...     print(i)
... 
baz
bar
foo

К также получают доступ к исходному индексу, используют enumerate() в Вашем списке прежде, чем передать его reversed():

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 
2 baz
1 bar
0 foo

С тех пор enumerate() возвраты генератор и генераторы не могут быть инвертированы, необходимо преобразовать его в list сначала.

1046
ответ дан Boris 4 March 2017 в 01:24
поделиться

Это может быть сделано как это:

for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +

, Таким образом, Ваше предположение было достаточно близко :) Немного неловкий, но это в основном говорит: запустите с 1 меньше чем len(collection), продолжайте идти, пока Вы не доберетесь до незадолго до-1 шагами-1.

к вашему сведению, эти help функция очень полезна, поскольку она позволяет Вам просмотреть документы для чего-то от консоли Python, например:

help(range)

53
ответ дан Lan Vukušič 4 March 2017 в 01:24
поделиться

обратная функция пригождается здесь:

myArray = [1,2,3,4]
myArray.reverse()
for x in myArray:
    print x
1
ответ дан bchhun 4 March 2017 в 01:24
поделиться

Используйте list.reverse() и затем выполните итерации, как Вы обычно были бы.

http://docs.python.org/tutorial/datastructures.html

5
ответ дан bluish 4 March 2017 в 01:24
поделиться

Можно сделать:

for item in my_list[::-1]:
    print item

(Или независимо от того, что Вы хотите выполнить для цикла.)

[::-1] часть инвертирует список в для цикла (но на самом деле не изменит Ваш список "постоянно").

152
ответ дан mipadi 4 March 2017 в 01:24
поделиться

Если Вы нуждаетесь в индексе цикла и не хотите пересекать весь список дважды или использовать дополнительную память, я записал бы генератор.

def reverse_enum(L):
   for index in reversed(xrange(len(L))):
      yield index, L[index]

L = ['foo', 'bar', 'bas']
for index, item in reverse_enum(L):
   print index, item
64
ответ дан 22 November 2019 в 21:49
поделиться

можно использовать генератор:

li = [1,2,3,4,5,6]
len_li = len(li)
gen = (len_li-1-i for i in range(len_li))

наконец:

for i in gen:
    print(li[i])

надежда эта справка Вы.

-1
ответ дан 22 November 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: