Пропустите в самом элементе этот this
в html и просто используйте этот параметр в своем javascript вместо this
. Также вам нужно использовать .is
с селектором :checked
, а не только clicked
. Я также изменил значение .changed()
на .clicked()
, так как в этом случае это одно и то же событие. Вы также можете рассмотреть возможность изменения id
в inactive
/ active
как class
, поскольку все id
s должны быть уникальными.
function but_clicked(e) {
if (e.id == "active") {
e.id = "inactive";
console.log(e.id);
} else {
e.id = "active";
console.log(e.id);
}
}
function tclick(e) {
if (e.id == "clicked") {
e.id = "empty";
console.log(e.id);
} else {
e.id = "clicked";
console.log(e.id);
}
}
$(document).ready(function() {
$('.toggler').click(function() {
if($('.toggler').is(':checked')) {
$('#inactive').hide();
$('#active').show();
} else {
$('#active').show();
$('#inactive').show();
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" class="toggler" id="clicked" onclick="tclick(this)">click here to sort
<p><input type="checkbox" id="inactive" onClick="but_clicked(this)">Hello1</p>
<p><input type="checkbox" id="inactive" onClick="but_clicked(this)">Hello2</p>
<p><input type="checkbox" id="inactive" onClick="but_clicked(this)">Hello3</p>
Используйте any
с нарезкой списка:
def contained_in(lst, sub):
n = len(sub)
return any(sub == lst[i:i+n] for i in range(len(lst)-n+1))
Или используйте join
для объединения обоих списков в строки и используйте оператор in
:
def contained_in(lst, sub):
return ','.join(map(str, sub)) in ','.join(map(str, lst))
[119 ] Использование :
>>> contained_in([1, 2, 3, 4, 5], [2, 3, 4])
True
>>> contained_in([1, 2, 2, 4, 5], [2, 3, 4])
False
Учитывая, что вам нужно сохранить порядок:
def contains(sub_array, array):
for i in range(len(array)-len(sub_array)+1):
for j in range(len(sub_array)):
if array[i+j] != sub_array[j]:
break
else:
return i, i+len(sub_array)
return False
Используйте эту функцию
Я пытался не усложнять ее
def contains(list1,list2):
str1=""
for i in list1:
str1+=str(i)
str2=""
for j in list2:
str2+=str(j)
if str1 in str2:
return True
else:
return False
Надеюсь, что это работает
Вы можете создать объединение двух списков в две разные строки. Затем напишите функцию, чтобы проверить, находится ли одна строка в другой.
def containedin(a, b):
if b in a:
return True
return False`
Многие люди опубликовали свои ответы. но я все равно хочу опубликовать свои усилия;) это мой код:
def containedin(a,b):
for j in range(len(b)-len(a)+1):
if a==b[j:j+len(a)]:
return True
return False
print(containedin([2, 3, 4],[1, 2, 3, 4, 5]))
print(containedin([2, 3, 4],[1, 1, 2, 2, 3, 3, 4, 4, 5, 5]))
print(containedin([2, 3, 4],[5, 4, 3, 2, 1]))
print(containedin([2, 2, 2],[1, 2, 3, 4, 5]))
print(containedin([2, 2, 2],[1, 1, 1, 2, 2, 2, 3, 3, 3]))
это вывод: True False False False True