sos join和reverse的区别

sos join和reverse的区别

join 和reverse搞不懂
比如 a=[‘1’,‘2’,‘3‘]   
a=''.join(a)
print a
123

a=[‘1’,‘2’,‘3‘]
a=a.reverse()
print a
显示是none
还有奇怪的就是
如果单单执行
''.join(a)那么 结果的值并不会返回到a里 print a还是老样子

单单执行a.reverse()则直接把值返回到a里 print a就是已经反转的列表

那么join后的值去哪了?他可以付给任何一个变量
而reverse后值就直接返回给原先的变量所以他赋给任何变量的值就是none是空的
是这样理解的吗???
a=['1','2','3']   
print type(a)
#将a元素序列连接成字符串
a=''.join(a)
print type(a)
print a


a=['1','2','3']   
#将a的元素顺序倒置
a.reverse()
print a

a=['1','2','3']   
#reverse()返回None,但对本对象的列表反向.
a = a.reverse()  
print a


QUOTE:
原帖由 bohemia 于 2009-2-12 21:00 发表
a=['1','2','3']   
print type(a)
#将a元素序列连接成字符串
a=''.join(a)
print type(a)
print a


a=['1','2','3']   
#将a的元素顺序倒置
a.reverse()
print a

a=['1','2','3']   
#reverse ...

谢谢我可否这样理解
运行函数返回的值,如果这个值是是通过映射解析出来的,那么他不改变映射其的对象,他可能被存放在某个临时变量里,所以返回的值就是他解析的值
而如果是直接修改原始对象那么他返回的值就是none,因为解析出来的值被自身用掉了。
再直观点说 返回的值只要改变原始对象了就是none否则就返回他的改变后的值
对否
我毕竟菜鸟对基础的东西非常不了解有错大家不要笑话TAT
a=['1','2','3']   
#将a的元素顺序倒置,即修改对象本身的数据,reverse()函数是否返回值跟这个对象本身的数据没直接关系.
a.reverse()
print a

如果这样:
b = a.reverse()
print b;  #b是None


a=[‘1’,‘2’,‘3‘]
a=a.reverse()
print a

相当于
a=[‘1’,‘2’,‘3‘]
b=a.reverse()
print b
a = b
print a
可恶啊 就算你是圣骑士大人也不用把很简单的问题搞的如此复杂吧
我只想问
1 运行一个函数是否必然会返回值,none 也算值
2 如果一个对象,运行函数后返回的值,用于修改对象本身了,他是否返回的值就一定为none(在你没有修改python原代码或者自己修改指定的时候)
3就是如果仅仅是被映射后的解析值,不改变映射其对象本身的值,这个值是否一定不为none(在你没有修改python原代码或者自己修改指定的时候)
1 运行一个函数是否必然会返回值,none 也算值
不是必须.

2 如果一个对象,运行函数后返回的值,用于修改对象本身了,他是否返回的值就一定为none(在你没有修改python原代码或者自己修改指定的时候)
一个函数执行函数,是否返回了值和修改对象本身没关系;
  函数执行,就修改对象数据了.

3就是如果仅仅是被映射后的解析值,不改变映射其对象本身的值,这个值是否一定不为none(在你没有修改python原代码或者自己修改指定的时候)

看看这个结果,也许就清楚很多.

QUOTE:
a=['1','2','3']   
print id(['1','2','3'])
print id(a)
a.reverse()
print id(a)
a = a.reverse();
print id(a)
print a



QUOTE:
原帖由 bohemia 于 2009-2-13 11:06 发表
1 运行一个函数是否必然会返回值,none 也算值
不是必须.

2 如果一个对象,运行函数后返回的值,用于修改对象本身了,他是否返回的值就一定为none(在你没有修改python原代码或者自己修改指定的时候)
一 ...

谢谢问题又来了

在变量a引用其他对象的时候变量的内存地址发生了变化
a.reverse 后a的地址没有变化,代表这个函数没有生成一个新的对象
但是 print id(['1','2','3']你每次打印他地址总是在变化的,
这是为什么?这个过程是不断释放旧的内存地址并且生成新的
还是给同一个对象 赋了多个地址?
print id(['1','2','3']你每次打印他地址总是在变化的,

如果你是每次都
python test.py 这样执行,不同的PVM进程执行,id也不一定是一样啊.
谢谢 不过完全没听懂 可能是还没学到那么深吧。。。
''.join(a)生成一个新的变量,就是这么定义好的。