首页 新闻 搜索 专区 学院

新人求教大神python中join的用法

0
悬赏园豆:10 [待解决问题]

做了一道反转地址顺序的练习,最后一条代码输入 i=",".join(i) 和 ",".join(i) 出来的结果是不同的,大神能帮忙看一下吗?

i=input("请从大到小输入地址,中间用空格隔开:")

i=i.split(" ")

i.reverse()

i=",".join(i)

print(i)

得出
请从大到小输入地址,中间用空格隔开:福建省 厦门市 鼓浪屿
鼓浪屿,厦门市,福建省

使用 ",".join(i)

i=input("请从大到小输入地址,中间用空格隔开:")

i=i.split(" ")

i.reverse()

",".join(i)

print(i)

得出的是
请从大到小输入地址,中间用空格隔开:福建省 厦门市 鼓浪屿
['鼓浪屿', '厦门市', '福建省']

为什么加了一个赋值,得出来的答案是不同的呢?

还没想好名字1119的主页 还没想好名字1119 | 初学一级 | 园豆:192
提问于:2020-04-09 15:34
< >
分享
所有回答(3)
1
i.reverse()

到这一句,i反转后,是一个序列/数组。

",".join(i)

这一句是将i中的元素,以,为连接符,生成一个新的字符串。注意 i 本身并没有变化

",".join(i)
print(i)

所以很明显,这里i仍然是一个数组,输出的形式为 ['','',''....]

i=",".join(i)
print(i)

",".join(i)的结果是一个字符串,将其赋值给i后,i现在就变成了一个字符串,即x,x,x,x

题外话,这就是python太过于自由了,如果是java这种强类型的语言,编译直接出错了。。 ;D

。淑女范erり | 园豆:799 (小虾三级) | 2020-04-09 17:11
0

楼上解释也很清楚
i=",".join(i)
相当于创建了一个值是“,”.join(i) 的对象,把这个值赋给了i,
所以你print(i)的时候,是你期望的结果

直接",".join(i),也是创建了一个新的字符串对象,但你并没有赋值给i,
i还是原来的值,也就是没有join操作不会对参数i生效
所以print的是reserve的结果

超级大懒虫vip | 园豆:256 (菜鸟二级) | 2020-04-09 21:50
1

简而言之就是你第一次打印的是",".join(i)的结果,而第二次打印的是i.reverse()的结果.
虽然第二次进行了",".join(i)操作,但是没有赋值给i,所以i并没有变化,打印出来的也就是i.reverse()的结果.

柠檬可乐小布丁 | 园豆:202 (菜鸟二级) | 2020-04-10 22:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册