Неожиданное поведение понимания списка в Python

Чтобы достичь ожидаемого результата, задайте правильное расстояние между col для всех элементов div внутри каждой строки.

  1. Сначала отрегулируйте расстояние div для заголовка col-6, class = "col-6"
  2. [114 ] И class = "col-6" внутри каждой строки ученика, чтобы разделить поровну

Проблема: перекрытие элементов div, вызывающее проблему выбора математики из выпадающего списка

<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <meta name="description" content="">
      <meta name="author" content="">
      <meta name="google" content="notranslate">
      <title>Title</title>
      <!-- Bootstrap Core CSS -->
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
      <!-- Custom CSS -->
   </head>
   <body>
      <div class="container-fluid">
         <div class="row">
            <div class="col-12">
            </div>
         </div>
         <div class="row">
            <div class="col-12"><br></div>
         </div>
         <div class="row">
            <div class="col-12">
               <div class="d-flex align-items-center">
                  <div class="container">
                     <br/><br/><br/>
                     <div class="container">
                        <div class="row align-items-center">
                        </div>
                        <div class="row">
                           <div class="col-2"></div>
                           <div class="col-6">
                              <div class="row">
                                 <div class="col-1">Math</div>
                                 <div class="col-2"></div>
                                 <div class="col-1">Science</div>
                              </div>
                           </div>
                        </div>
                        <div class="row ">
                           <div class="col-2">
                              Student1
                           </div>
                           <div class="col-3">
                              <div class="row">
                                 <div class="col-6">
                                    <div>
                                       <select name="name_student1_math" id="id_student1_math">
                                          <option value="na">N/A</option>
                                          <option value="1" >1</option>
                                          <option value="2" selected >2</option>
                                          <option value="3" >3</option>
                                          <option value="4" >4</option>
                                       </select>
                                    </div>
                                 </div>
                                 <div class="col-1"></div>
                                 <div class="col-3">
                                    <div>
                                       <select name="name_student1_science" id="id_student1_science">
                                          <option value="na">N/A</option>
                                          <option value="1" >1</option>
                                          <option value="2" >2</option>
                                          <option value="3" >3</option>
                                          <option value="4" selected >4</option>
                                          <option value="5" >5</option>
                                          <option value="6" >6</option>
                                          <option value="7" >7</option>
                                          <option value="8" >8</option>
                                          <option value="9" >9</option>
                                       </select>
                                    </div>
                                 </div>
                              </div>
                           </div>
                        </div>
                        <div class="row ">
                           <div class="col-2">
                              Student2
                           </div>
                           <div class="col-3">
                              <div class="row">
                                 <div class="col-6">
                                    <div>
                                       <select name="name_student2_math" id="id_student2_math">
                                          <option value="na">N/A</option>
                                          <option value="1" >1</option>
                                          <option value="2" selected >2</option>
                                          <option value="3" >3</option>
                                          <option value="4" >4</option>
                                       </select>
                                    </div>
                                 </div>
                                 <div class="col-1"></div>
                                 <div class="col-3">
                                    <div>
                                       <select name="name_student2_science" id="id_student2_science">
                                          <option value="na">N/A</option>
                                          <option value="1" >1</option>
                                          <option value="2" >2</option>
                                          <option value="3" >3</option>
                                          <option value="4" selected >4</option>
                                          <option value="5" >5</option>
                                          <option value="6" >6</option>
                                          <option value="7" >7</option>
                                          <option value="8" >8</option>
                                          <option value="9" >9</option>
                                       </select>
                                    </div>
                                 </div>
                              </div>
                           </div>
                        </div>
                     </div>
                  </div>
               </div>
            </div>
         </div>
      </div>
   </body>
</html>

6
задан Gregg Lind 22 October 2008 в 13:41
поделиться

2 ответа

Проблема - это с return self.display Вы возвращаете ссылку на этот список (не копия). Таким образом, то, с чем Вы заканчиваете, является списком, где каждый элемент является ссылкой на self.display. Для иллюстрирования посмотрите на следующее:

>>> a = [1,2]
>>> b = [a,a]
>>> b
[[1, 2], [1, 2]]
>>> a.append(3)
>>> b
[[1, 2, 3], [1, 2, 3]]

Вы, вероятно, хотите использовать что-то как return self.display[:].

15
ответ дан 8 December 2019 в 12:24
поделиться

Следите, если я осуществляю рефакторинг это немного?

def digit(n):
    for i in itertools.count():
        yield (i%n+1, not i%n)

Но на самом деле Вам не нужен тот при реализации всего этого как простого итератора:

def counter(digits, base):
    counter = [0] * digits

    def iterator():
        for total in itertools.count(1):
            for i in range(len(counter)):
                counter[i] = (counter[i] + 1) % base
                if counter[i]:
                    break
            print total, list(reversed(counter))
            yield list(reversed(counter))

    return iterator()

c = counter(2, 4)
print list(itertools.islice(c, 10))

Если Вы хотите избавиться от печати (отладка, не так ли?), пойдите с циклом с условием продолжения.

Это incindentally также решает Вашу начальную проблему, потому что reversed возвращает копию списка.

О, и это основано на нуле теперь ;)

4
ответ дан 8 December 2019 в 12:24
поделиться
Другие вопросы по тегам:

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