Python学习杂记 交换元素 回文 翻转字符串
- 交换值常见的方法有
- 中间值t交换
a = a + b, b = a - b, a = a - b
- 异或法:
a = a ^ b, b = a ^ b, a = a ^ b
- 在python中有一种更加直接,也更python的写法:
a, b = b, a
- python中没有++,–。这是因为python中的数据类型是不可变数据,也就是数字类型数据在内存中不会改变,那么当变量值发生改变,就会重新申请一块内存赋值为新值,然后将变量指向新的内存地址。对比于’+=’;’++’,’–’改变的是对象本身,而不是变量本身,即改变数据地址所指向的内存中的内容,而前者是重新生成一个变量,把操作后的结果赋予新生成的变量。
- 关于字符串/数组的翻转(也称为倒置),用类似于c语言的方法写也可以,但在python中有更加方便的写法,测试如下:
import numpy as np
def reverse(ss):
return ss[::-1]
'''
ss[-1] 可以返回最后一个元素,同理[-2][-3]返回倒数2.3个元素
ss[:-1] 返回除了最后一个元素以外的所有元素,也好理解,python的截断是左闭右开区间式截断
ss[::-1] 返回从最后一个元素开始到第一个元素,即翻转该list
ss[2::-1] 返回从下标2开始向前到第一个的新list:如[1,2,3,4]
调用后则返回[3,2,1]
'''
a = np.random.rand(5)
s = '123456'
cnt = 0
for i in range(len(a)):
print(i, a[i])
for i in a:
print(cnt, i)
cnt += 1
print(a)
print(s)
print(reverse(reverse(a)))
print(reverse(s))
'''OUTPUT:
1 0.922775893026
2 0.717193412042
3 0.565067219685
4 0.937379724773
0 0.380341348411
1 0.922775893026
2 0.717193412042
3 0.565067219685
4 0.937379724773
[ 0.38034135 0.92277589 0.71719341 0.56506722 0.93737972]
123456
[ 0.38034135 0.92277589 0.71719341 0.56506722 0.93737972]
654321
'''