如何避免在Python中链接3d数组?

2024-09-22 16:25:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直试图复制一个三维阵列,但似乎无论我做什么;修改副本,也修改原件

我已经尝试了许多关于this问题的建议

有人能解释一下为什么这段代码在被复制之后要修改Clients数组,以及如何避免这种情况吗

##### This block is to get and save the information

import csv

import datetime

import glob
import os

#import copy

from datetime import timedelta

list_of_files = glob.glob(r'U:\UEL\Sales and Marketing\Relationship - Sales\Team\Edinburgh Clients\Portal backups\Full export archive\*.csv') # * means all if need specific format then *.csv
latest_file = max(list_of_files, key=os.path.getctime)

with open(latest_file, newline='') as csvfile:
    data = list(csv.reader(csvfile))
    Vheaders = data[0]
    data.pop(0)

Clients = list(set(list(zip(*data))[9]))

i = 0
for line in Clients:
    Clients[i] = [Clients[i]]
    i = i + 1

Voids = []
CoTs = []

for row in Clients:
    Voids.append(row)

for row in Clients:
    CoTs.append(row)

#Voids = list(Clients) #This creates an array of arrays, an array of voids for each client

#CoTs = list(Voids) #Same as above for CoTs

#import pdb
#pdb.set_trace()


i = 0

for row in Clients:
    for line in data:
        #if line[0] == '443179':
            #import pdb
            #pdb.set_trace()
        if (datetime.date.today() - timedelta(days=7)) <= datetime.datetime.strptime(line[2], "%d/%m/%Y").date() < datetime.date.today(): 
            if line[9] == row[0]:
                Voids[i].append(line)
            else:
                pass
        else:
            pass
    i = i + 1

Tags: ofcsvinimportfordatadatetimeif
1条回答
网友
1楼 · 发布于 2024-09-22 16:25:42

你需要一个deepcopy。 Python中的赋值语句不复制对象,而是在目标和对象之间创建绑定。对于可变或包含可变项的集合,有时需要一个副本,以便一个可以更改一个副本而不更改另一个副本。”

相关问题 更多 >