首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将列表追加到另一个列表,而不是“按引用”

如何将列表追加到另一个列表,而不是“按引用”
EN

Stack Overflow用户
提问于 2020-05-12 04:14:32
回答 1查看 38关注 0票数 0

我想将一个列表附加到另一个列表,然后将第一个列表用作另一个要附加到顶级列表的条目的模板。但是当我修改下面的列表时,上面的列表也会被修改。

代码语言:javascript
复制
trip = []
trips = []

trip_day = [1, 2]
bd_year = '2020'
bd_start_mo = 7
leg_dates = []
days = [7, 14]

leg1 = {'leg_date': 7, 'item2': 'green'}
leg2 = {'leg_date': 7, 'item2': 'red'}
trip = [leg1, leg2]

for idx,day in enumerate(days): # loop thru each instance of trip 
    for leg in trip_day: # loop thru each leg in a trip
        # build list of actual dates for each leg
        leg_dates.append(day + (leg - 1))
    for leg in range(0,len(trip_day)): # loop thru each leg and update actual date in the dict
        trip[leg]['leg_date'] = leg_dates[leg]

    a = list(trip)
    trips.append(a)
    print(trips)

    leg_dates = []
    a =[]

这将导致:

代码语言:javascript
复制
[[{'leg_date': 14, 'item2': 'green'}, {'leg_date': 15, 'item2': 'red'}],
[{'leg_date': 14, 'item2': 'green'}, {'leg_date': 15, 'item2': 'red'}]]

我希望前两个条目的leg_dates为7和8,而不是14和15。我尝试使用list()并使用中间列表"a“进行复制,但没有成功。

那么,当我修改"trip“时,如何防止"trips”更改,或者换句话说,如何向列表追加值而不是引用?“扩展”不是我想要的。我的“Python速成教程”一书没有提到这一点。这是非常令人沮丧的,因为我来自C/MATLAB背景。

EN

回答 1

Stack Overflow用户

发布于 2020-05-12 04:29:41

代码语言:javascript
复制
trip = []
trips = []

trip_day = [1, 2]
bd_year = '2020'
bd_start_mo = 7
leg_dates = []
days = [7, 14]

leg1 = {'leg_date': 7, 'item2': 'green'}
leg2 = {'leg_date': 7, 'item2': 'red'}
trip = [leg1, leg2]

for idx,day in enumerate(days): # loop thru each instance of trip
    for leg in trip_day: # loop thru each leg in a trip
        # build list of actual dates for each leg
        leg_dates.append(day + (leg - 1))
    for leg in range(0,len(trip_day)): # loop thru each leg and update actual date in the dict
        trip[leg]['leg_date'] = leg_dates[leg]

    a = list(trip)
    trips.append(a)


    leg_dates = []
    a =[]


    print(trip)

输出

代码语言:javascript
复制
[{'leg_date': 7, 'item2': 'green'}, {'leg_date': 8, 'item2': 'red'}]
[{'leg_date': 14, 'item2': 'green'}, {'leg_date': 15, 'item2': 'red'}]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61738465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档