Py学习  »  Python

Python list.append(另一个清单)只是一次又一次地重复另一个清单

Ahwar • 4 年前 • 234 次点击  

我正在写一个循环的程序。 在循环体中,它生成一个Python列表名称值,并将该值附加到另一个全局列表值 但我有个问题

values.append(值)

但是它将值附加到值的每个元素

# values
[['closed_eye_0003.jpg_face_2.jpg', 0]]
# value
['closed_eye_0007.jpg_face_1.jpg', 0]
# after appending the value to values the output is 
[['closed_eye_0007.jpg_face_1.jpg', 0], ['closed_eye_0007.jpg_face_1.jpg', 0]]

代码是

import face_recognition
values = list()
value = list()
root_dir = '/content/dataset_facialImages_300/test/CloseFace'
isOpen = 0
for img_name in imgs_names:
  img_file = root_dir + '/' + img_name
  # Load the jpg file into a numpy array
  image = face_recognition.load_image_file(img_file)

  # Find all facial features in all the faces in the image
  face_landmarks_list = face_recognition.face_landmarks(image)
  if len(face_landmarks_list):
    # print(len(face_landmarks_list))
    # print(img_name)
    first_face = face_landmarks_list[0]

    left_eye = first_face['left_eye']
    right_eye = first_face['right_eye']

    value.clear()
    value.append(img_name)
    value.append(isOpen)
    # for i in right_eye:
    #   value.append(i[0])
    #   value.append(i[1])
    print(value)
    # values.insert( len(values), value)
    values.append(value)
    print(values)
  # print( (len(values) / len(imgs_names)) * 100 )

输出是

['closed_eye_0003.jpg_face_2.jpg', 0]
[['closed_eye_0003.jpg_face_2.jpg', 0]]
['closed_eye_0007.jpg_face_1.jpg', 0]
[['closed_eye_0007.jpg_face_1.jpg', 0], ['closed_eye_0007.jpg_face_1.jpg', 0]]
['closed_eye_0009.jpg_face_1.jpg', 0]
[['closed_eye_0009.jpg_face_1.jpg', 0], ['closed_eye_0009.jpg_face_1.jpg', 0], ['closed_eye_0009.jpg_face_1.jpg', 0]]
['closed_eye_0012.jpg_face_1.jpg', 0]
[['closed_eye_0012.jpg_face_1.jpg', 0], ['closed_eye_0012.jpg_face_1.jpg', 0], ['closed_eye_0012.jpg_face_1.jpg', 0], ['closed_eye_0012.jpg_face_1.jpg', 0]]

如果我用

values.extend(value) 

它不会重复

如果我用

values.insert( len(values), value)

输出相同

输出应该是

['closed_eye_0003.jpg_face_2.jpg', 0]
[['closed_eye_0003.jpg_face_2.jpg', 0]]
['closed_eye_0007.jpg_face_1.jpg', 0]
[['closed_eye_0003.jpg_face_1.jpg', 0], ['closed_eye_0007.jpg_face_1.jpg', 0]]
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51235
 
234 次点击  
文章 [ 1 ]  |  最新文章 4 年前
pecey
Reply   •   1 楼
pecey    4 年前

创建 value = list() 在循环中而不是清除它。

如果你打印 value values 清场后 价值 ,你就会明白发生了什么。