vgluhov
@vgluhov
.exe

Как проверить наличие всех элементов в массиве Python?

Допустим, есть массив
student = ["Вася", "Петя", "Ваня", "Света"]

#нужно сделать перекличку. Я реализовал это таким образом:
student = ["Вася", "Петя", "Ваня", "Света"]

if "Вася" and "Петя" and "Ваня" and "Света" in student:    
  
    print ("Все студенты на месте. Начинаем занятие!")
    
else:
    
   print ("Отсутствующие к экзамену допущены не будут")


Как эту строку:
if "Вася" and "Петя" and "Ваня" and "Света" in student:

упростить, без использования And?
  • Вопрос задан
  • 274 просмотра
Решения вопроса 2
@Span4ev
Вам нужно, чтобы условие выполнилось, если все эти люди находятся в массиве (в Python - это список)
Значит у вас уже есть список с этими именами.
Значит вам нужен другой список, на основании которого будет производиться сравнение, верно?
Такой список, который вы будете создавать во время переклички

students = ["Вася", "Петя", "Ваня", "Света"] # Должно быть так
students = ["Петя", "Ваня", "Света"] # А не так или как-то иначе


Списки должны совпасть.

Значит в момент переклички создаёте ещё один список, куда помещаете присутствующих,
иначе какой смысл в перекличке, если не с чем сравнивать.

Поэтому:

all_students = ["Вася", "Петя", "Ваня", "Света"]

current_students = [] # сюда помещаете имена людей в момент переклички

current_students.append('Вася') # добавляете имена в момент переклички в пустой список
current_students.append('Петя')
current_students.append('Ваня')
current_students.append('Света')

if all_students == current_students:
	print ('Все студенты на месте. Начинаем занятие!')
else:
	for name in all_students:
		if name not in current_students:		
			print ('Занятие отменяется из-за отсутствия ' + name.title())

#  Результат: 
# ---> Все студенты на месте. Начинаем занятие!


Если кто-то не пришёл и не попал в список создаваемый во время переклички, то:

all_students = ["Вася", "Петя", "Ваня", "Света"]
current_students = []
current_students.append('Вася')
# current_students.append('Петя') # не явился
current_students.append('Ваня')
current_students.append('Света')

if all_students == current_students:
	print ('Все студенты на месте. Начинаем занятие!')
else:
	for name in all_students:
		if name not in current_students:		
			print ('Занятие отменяется из-за отсутствия ' + name.title())

#  Результат: 
# ---> Занятие отменяется из-за отсутствии Петя!

Ответ написан
kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn
Самый простой вариант: просто сравнить количество присутствующих студентов с общим количеством.
students = ['Вася', 'Петя', 'Ваня', 'Света']
present_students = ['Вася', 'Петя']

if len(students) == len(present_students):
    print('Все студенты на месте. Начинаем занятие!')
else:
    print('Отсутствующие к экзамену допущены не будут')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@PavelMos
Если нужно включение в условие всех имён, то, имхо если только создавать функцию проверки и включать в скрипт или конструировать, чтобы не писать долго руками, выражение условия с проверкой с перечислением имён, а потом запускать его через eval().

student = ["Вася", "Петя", "Ваня", "Света"]
s1=s=['(print (\"Все студенты на месте. Начинаем занятие!\")) if ( "'] +['" and "'.join(student)]+['\" in student) else ( print (\"Отсутствующие к экзамену допущены не будут\"))']     
s2=''.join(s1)
eval(s2)


Если же оригинальный список заранее известен и в нём и проверяемом списке всё по порядку, или они сортируются перед проверкой, то можно просто списки сравнить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы