Python学习杂记 交换元素 回文 翻转字符串

本文深入探讨了Python中独特的数据交换技巧,包括中间值法、异或法及Python特有的简洁方式。同时,文章详细介绍了字符串和数组翻转的高效方法,展示了Python的强大与灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python学习杂记 交换元素 回文 翻转字符串

  • 交换值常见的方法有
    1. 中间值t交换
    2. a = a + b, b = a - b, a = a - b
    3. 异或法: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): # ss can be different types
    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
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值