我正在写一个循环的程序。
在循环体中,它生成一个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]]