#python #string #list #count
Вопрос:
Я обнаружил проблему синтаксиса, которую не смог решить или найти решение в Интернете, и надеялся, что у кого-нибудь здесь может быть ответ. Я пытаюсь подсчитать количество элементов списка в строке. Я пробовал обычные способы, такие как count, isinstance и set(возможно, все неправильно).
Я хотел бы подсчитать, сколько элементов списка у меня в str1:
arr = [1, 'apple', 'banana', 2, 3]
str1 = ("this " arr[0] " then " arr[3] " next " arr[2])
Вывод будет выглядеть примерно так: arr[] использовался «3» раза в str1
Комментарии:
1. Итак, ваш необходимый ответ
2
на этотarr
вопрос ? Я понятия не имею, чем вы пытаетесь это продемонстрироватьstr1
.2. Можете ли вы объяснить, что вы собираетесь с этим делать, потому что это будет иметь смысл.
3. Вы имеете в виду «Я хочу посчитать количество строк в списке»?!
4.
"this " arr[0]
не является действительным, это должно быть"this " str(arr[0])
5. Я обновил, как должен выглядеть результат. Я хочу иметь возможность подсчитать, сколько раз arr[] использовался в строке.
Ответ №1:
Используйте этот count()
метод, чтобы подсчитать, сколько раз подстрока встречается в строке. И используйте sum()
для суммирования подсчетов каждого элемента списка.
total = sum(str1.count(str(i)) for i in arr)
print(f'Str1 contains a total of {total} arr[]')
Это учитывает все повторяющиеся совпадения отдельно. Если вам не нужны эти отдельные счетчики, используйте in
их для проверки наличия элемента в строке.
total = sum(str(i) in str1 for i in arr)
Комментарии:
1. Я тоже так думал, но получаю эту ошибку: ошибка типа: можно объединить только str (не «int») в str
2. Разве вы не видели мой предыдущий комментарий, в котором говорилось, что
"this " arr[0]
это недопустимо?3. Эта ошибка исходит не из кода в моем ответе, а из-за вашего неправильного способа создания
str1
.4.
str1 = ("this " str(arr[0]) " then " str(arr[2]) " next " str(arr[3])
5. Или используйте f-строку:
str1 = f"this {arr[0]} then {arr[2]} next {arr[3]}"
Ответ №2:
Мы должны добавить тип переменной «str» в массив, чтобы их можно было подсчитать
str1 = ("this " str(arr[0]) " then " str(arr[2]) " next " str(arr[3]))