python基础练习--列表向后平移问题!

题目:将一个列表向后平移,末尾的数字添加到头部。例如:list=[1,2,3,4,5,6,7,8,9,10],向后平移4格,变成[7,8,9,10,1,2,3,4,5,6]

 

  1 # -*- coding:utf-8 -*-
  2 
  3 l =[1,2,3,4,5,6,7,8,9,10]
  4 print l
  5 print '向后移动4格'
  6 '''
  7 l1=l
  8 print id(l1)
  9 print id(l)
 10 for i in range(4,9):
 11     l[i]=l1[i-4]
 12 print l
 13 for i in range(4):
 14     l[i]=l1[i+6]
 15 #print l
 16 '''
 17 l1 = [1,2,3,4,5,6,7,8,9,10,11]
 18 #print id(l)
 19 #print id(l1)
 20 for i in range(4,10):
 21     l[i] = l1[i-4]
 22 #print l
 23 for i in range(4):
 24     l[i] = l1[i+6]
 25 print l

运行的结果为:

 

 

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 向后移动4格 140134087009128 140134086958688 [7, 8, 9, 10, 1, 2, 3, 4, 5, 6] 


向后移动4格[7, 8, 9, 10, 1, 2, 3, 4, 5, 6]

 

 

看上面的程序你会发现真正执行的程序没几条,大部分都是注释,本题目的重点在于列表是可变的:

 

最原始的程序,我另l1=l来进行数据替换,发现就是不行,可以看for循环里的逻辑,没毛病,然后我把l和l1的id输出,发现,两个列表的id是一样的

列表是可变的,所以第一个for循环开始执行,l1也跟l一起变了。

所以要选择另外的列表l1来做数据提取

 

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
向后移动4格
140134087009128
140134086958688
[7, 8, 9, 10, 1, 2, 3, 4, 5, 6]

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值