Список разделения в меньшие списки (разделение в половине)

у нас есть два метода:
первый:
у меня есть два изображения с уникальным классом или идентификатором, и я хочу показать их на кругах щелчка:
[117 ]

 <div id="sidle">
  <img class="image" id="img-SmallStreet" src="img/nelson-street/SOKER.jpg" alt>
  <img class="image" id="img-BellLane" src="img/nelson-street/VORTER.jpg"alt>
 </div>
 <circle class="circles" id="SmallStreet" /> 
 <circle class="circles" id="BellLane" />
 <script>
 $(document).ready(function(){
    $("#SmallStreet").click(function(){ $("#img-SmallStreet").fadeIn();  });
    $("#BellLane").click(function(){ $("#img-BellLane").fadeIn();  });
 });
 </script>

или простым и лучшим способом:

 <div id="sidle">
  <img class="image" id="img-SmallStreet" src="img/nelson-street/SOKER.jpg" alt>
  <img class="image" id="img-BellLane" src="img/nelson-street/VORTER.jpg"alt>
 </div>
 <circle class="circles" id="SmallStreet" /> 
 <circle class="circles" id="BellLane" />
 <script>
 $(document).ready(function(){
    $(".circles").click(function(){ 
        $id = $(this).attr('id');
        $("#sidle #"+id).fadeIn();
    });
 });
 </script>

У меня много изображений, и я хочу показать их:

 <script>
 $(document).ready(function(){
    let index = 0;
    let lenght = $(".img").length;
    $(".circles").click(function(){ 
        $index = $(this).index();
        $("img").hide();
        $("img").eq($index).fadeIn();
        $index +=1;
        if($index >= length) $index = 0;
    });
 });
 </script>
130
задан Antti Haapala 9 March 2019 в 20:44
поделиться

7 ответов

A = [1,2,3,4,5,6]
B = A[:len(A)//2]
C = A[len(A)//2:]

Если вам нужна функция:

def split_list(a_list):
    half = len(a_list)//2
    return a_list[:half], a_list[half:]

A = [1,2,3,4,5,6]
B, C = split_list(A)
193
ответ дан 24 November 2019 в 00:20
поделиться

Хотя приведенные выше ответы являются более или менее правильными, вы можете столкнуться с проблемами, если размер вашего массива не делится на 2, в результате чего a / 2 , будучи нечетным, является плавающей точкой в ​​python 3.0, а в более ранней версии, если вы указали из __future__ import Division в начале твой сценарий В любом случае вам лучше пойти на целочисленное деление, то есть a // 2 , чтобы получить «прямую» совместимость вашего кода.

2
ответ дан 24 November 2019 в 00:20
поделиться

Использование нарезки списка . Синтаксис в основном my_list [start_index: end_index]

>>> i = [0,1,2,3,4,5]
>>> i[:3] # same as i[0:3] - grabs from first to third index (0->2)
[0, 1, 2]
>>> i[3:] # same as i[3:len(i)] - grabs from fourth index to end
[3, 4, 5]

Чтобы получить первую половину списка, вы переходите от первого индекса к len (i) // 2 (где // - это целочисленное деление - поэтому 3 // 2 даст результат с плавающей точкой 1 вместо недопустимого индекса списка 1.5`):

>>> i[:len(i)//2]
[0, 1, 2]

. и поменяйте местами значения, чтобы получить вторую половину:

>>> i[len(i)//2:]
[3, 4, 5]
4
ответ дан 24 November 2019 в 00:20
поделиться

B, C = A [: len (A) / 2], A [len (A) / 2: ]

12
ответ дан 24 November 2019 в 00:20
поделиться
def splitter(A):
    B = A[0:len(A)//2]
    C = A[len(A)//2:]

 return (B,C)

Я тестировал, и для принудительного деления int в python 3 требуется двойной слеш. Мой оригинальный пост был верным, хотя почему-то сломался в Опере wysiwyg.

8
ответ дан 24 November 2019 в 00:20
поделиться

Несколько более общее решение (вы можете указать количество нужных вам частей, а не просто разделить «пополам») :

РЕДАКТИРОВАТЬ : обновленный пост для обработки нечетных длин списка

РЕДАКТИРОВАТЬ2 : снова обновить пост на основе информативных комментариев Бриана

def split_list(alist, wanted_parts=1):
    length = len(alist)
    return [ alist[i*length // wanted_parts: (i+1)*length // wanted_parts] 
             for i in range(wanted_parts) ]

A = [0,1,2,3,4,5,6,7,8,9]

print split_list(A, wanted_parts=1)
print split_list(A, wanted_parts=2)
print split_list(A, wanted_parts=8)
76
ответ дан 24 November 2019 в 00:20
поделиться
f = lambda A, n=3: [A[i:i+n] for i in range(0, len(A), n)]
f(A)

n - предопределенная длина массивов результатов

39
ответ дан 24 November 2019 в 00:20
поделиться