p04

本文详细介绍了Python列表的基本概念、特点、操作方法以及在实际应用中的常见问题与解决方案,包括列表与字符串的相似与不同之处、append()与extend()函数、插入、弹出、删除、排序等操作,同时涉及计算平均数、列表类比C中的指针、交换元素、左移元素、二维数组排序等内容。
部署运行你感兴趣的模型镜像

1. 列表:

lst = [5.4, 'hello', 2]


2.列表和字符串相同点:

都有前向索引和后向索引([]运算符)

都可以向字符串一样切片([:])

拼接(+)和重复(*)

成员(in运算符)

长度(len()函数)

循环(for)


3. 列表和字符串不同点:

列表使用[]生成,元素之间用逗号分隔;字符串用引号生成

列表可以包含多种类型的对象;字符串只能是字符

列表内容是可变的;字符串是不可变的


4. 下面程序输出结果是:4

a = [1, 2, 3]
b = a
b[1] = 4
print a[1]


5. append()与extend()函数:

>>> lst
[5.4, 'hello', 2, 3, 5]
>>> lst + 9

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    lst + 9
TypeError: can only concatenate list (not "int") to list
>>> lst + [9]
[5.4, 'hello', 2, 3, 5, 9]
>>> lst
[5.4, 'hello', 2, 3, 5]
>>> lst[3] = 8
>>> lst
[5.4, 'hello', 2, 8, 5]
>>> lst.append(10)
>>> lst
[5.4, 'hello', 2, 8, 5, 10]
>>> lst.extend([200, 'world'])
>>> lst
[5.4, 'hello', 2, 8, 5, 10, 200, 'world']
>>> lst[:5:2]
[5.4, 2, 5]

6. insert(), pop(), remove(), sort(), reverse()

>>> lst
[5.4, 'hello', 2, 8, 5, 10, 200, 'world']
>>> lst.insert(5, 2)
>>> lst
[5.4, 'hello', 2, 8, 5, 2, 10, 200, 'world']
>>> lst.pop()
'world'
>>> lst
[5.4, 'hello', 2, 8, 5, 2, 10, 200]
>>> lst.pop()
200
>>> lst
[5.4, 'hello', 2, 8, 5, 2, 10]
>>> lst.remove(2)
>>> lst
[5.4, 'hello', 8, 5, 2, 10]
>>> lst.remove(800)

Traceback (most recent call last):
  File "<pyshell#48>", line 1, in <module>
    lst.remove(800)
ValueError: list.remove(x): x not in list
>>> lst
[5.4, 'hello', 8, 5, 2, 10]
>>> lst.sort()
>>> lst
[2, 5, 5.4, 8, 10, 'hello']
>>> lst.reverse()
>>> lst
['hello', 10, 8, 5.4, 5, 2]

7. 计算10个数字的平均值:

num = []
for i in range(10):
    num.append(float(raw_input()))

s = 0
for n in num:
    s += n
print s/len(num)


8. 对于7也可以使用内建函数:print sum(num)/len(num)


9. 列表类似于c中的指针:

>>> a = 10
>>> b = a
>>> b = 20
>>> a
10
>>> b
20
>>> lst
['a', 'b', 'hello']
>>> lst1 = lst
>>> lst1[0] = 8
>>> lst
[8, 'b', 'hello']


10. 交换两个元素:

def swap(lst, a, b):
    temp = lst[a]
    lst[a] = lst[b]
    lst[b] = lst[a]

arr = [10, 20]
print arr
swap(arr, 0, 1)
print arr

11. 列表中每个元素左移一位,第一个元素放到最后:

def ll(lst):
    temp = lst[0]
    for i in range(len(lst)-1):
        lst[i] = lst[i+1]
    lst[-1] = temp<pre name="code" class="python">def f(l):
    l = [4, 5, 6]
    return l
     
a = [1, 2, 3]
f(a)
print a[1]

lst = [10,20,30,40,50,60]print lstll(lst)print lst

 

12. 以下代码输出结果为:2  可以使用 http://www.pythontutor.com/看下:

def f(l):
    l = [4, 5, 6]
    return l
     
a = [1, 2, 3]
f(a)
print a[1]

13.  list的index方法:

>>> lst
[20, 30, 40, 50, 60, 10]
>>> lst.index(30)
1
>>> lst.append(30)
>>> lst
[20, 30, 40, 50, 60, 10, 30]
>>> lst.index(30)
1

14. 时间复杂度:4n + 10和100n +137都与输入长度成正比:

大O表示,只保留高阶项:

4n + 4 = O(n)

n^2 + 3n + 4 = O(n^2)

2^n + n^3 = O(2^n)

15. 二分查找算法:

def bi_search(lst, v):
    low = 0
    high = len(lst) - 1
    while low <= high:
        mid = (low + high)/2
        if v > lst[mid]:
            low = mid + 1
        elif v < lst[mid]:
            high = mid -1
        else:
            return mid
    return -1

16. 上算法中:将low=mid +1和high= mid-1改为low= mid, high = mid,将有可能出现死循环如:[0, 1]查找1;将low<=high改为low<high,有可能漏掉要查找的元素如:[0,1, 2, 3]查找3


17. 选择排序:

def swap(lst, a, b):
    temp = lst[a]
    lst[a] = lst[b]
    lst[b] = temp

def sel(lst):
    for i in range(len(lst)):
        for j in range(i+1, len(lst)):
            if lst[i] > lst[j]:
                swap(lst, i, j)

18. 冒泡排序:

def swap(lst, a, b):
    temp = lst[a]
    lst[a] = lst[b]
    lst[b] = temp
def bubble(lst):
    flag = True
    high = len(lst) - 1
    while flag:
        flag = False
        for i in range(high):
            if lst[i] > lst[i+1]:
                swap(lst, i, i+1)
                flag = True
        high -= 1

19. 内建函数:sorted(), 如:sorted(lst),与lst.sort()相比不改变lst;使用的是快速排序


20. 列表解析或推导:

一种有原列表创建新列表的简洁方法:[表达式 for 语句 条件]

eg: lst = [x**2 for x in range(1, 10)]


21. 二维数组sort()的一些用法:

students = [['zhang', 89],['wang', 92],['li', 100],['zhao', 99]]
print students
students.sort()
print students
def f(l):
    return l[1]
students.sort(key = f)
print students
students.sort(key = f, reverse = True)
print students

print sum([stu[1] for stu in students])/float(len(students))

#输出结果如下:
>>> 
[['zhang', 89], ['wang', 92], ['li', 100], ['zhao', 99]]
[['li', 100], ['wang', 92], ['zhang', 89], ['zhao', 99]]
[['zhang', 89], ['wang', 92], ['zhao', 99], ['li', 100]]
[['li', 100], ['zhao', 99], ['wang', 92], ['zhang', 89]]
95.0

22. 匿名函数lambda:

上条中定义的f函数可省掉,改为:

students.sort(key = lambda x: x[1])


23. 附加:

>>> [n*n for n in range(7) if n*n%2 == 0]
[0, 4, 16, 36]
>>> l = [1, 2, 3, 4, 'hello']
>>> ''.join([str(i) for i in l])
'1234hello'
>>> '*'.join([str(i) for i in l])
'1*2*3*4*hello'
>>> ''.join(str(i) for i in l)
'1234hello'
>>> '*'.join(str(i) for i in l)
'1*2*3*4*hello'


您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

【电力系统】单机无穷大电力系统短路故障暂态稳定Simulink仿真(带说明文档)内容概要:本文档围绕“单机无穷大电力系统短路故障暂态稳定Simulink仿真”展开,提供了完整的仿真模型与说明文档,重点研究电力系统在发生短路故障后的暂态稳定性问题。通过Simulink搭建单机无穷大系统模型,模拟不同类型的短路故障(如三相短路),分析系统在故障期间及切除后的动态响应,包括发电机转子角度、转速、电压和功率等关键参数的变化,进而评估系统的暂态稳定能力。该仿真有助于理解电力系统稳定性机理,掌握暂态过程分析方法。; 适合人群:电气工程及相关专业的本科生、研究生,以及从事电力系统分析、运行与控制工作的科研人员和工程师。; 使用场景及目标:①学习电力系统暂态稳定的基本概念与分析方法;②掌握利用Simulink进行电力系统建模与仿真的技能;③研究短路故障对系统稳定性的影响及提高稳定性的措施(如故障清除时间优化);④辅助课程设计、毕业设计或科研项目中的系统仿真验证。; 阅读建议:建议结合电力系统稳定性理论知识进行学习,先理解仿真模型各模块的功能与参数设置,再运行仿真并仔细分析输出结果,尝试改变故障类型或系统参数以观察其对稳定性的影响,从而深化对暂态稳定问题的理解。
本研究聚焦于运用MATLAB平台,将支持向量机(SVM)应用于数据预测任务,并引入粒子群优化(PSO)算法对模型的关键参数进行自动调优。该研究属于机器学习领域的典型实践,其核心在于利用SVM构建分类模型,同时借助PSO的全局搜索能力,高效确定SVM的最优超参数配置,从而显著增强模型的整体预测效能。 支持向量机作为一种经典的监督学习方法,其基本原理是通过在高维特征空间中构造一个具有最大间隔的决策边界,以实现对样本数据的分类或回归分析。该算法擅长处理小规模样本集、非线性关系以及高维度特征识别问题,其有效性源于通过核函数将原始数据映射至更高维的空间,使得原本复杂的分类问题变得线性可分。 粒子群优化算法是一种模拟鸟群社会行为的群体智能优化技术。在该算法框架下,每个潜在解被视作一个“粒子”,粒子群在解空间中协同搜索,通过不断迭代更新自身速度与位置,并参考个体历史最优解和群体全局最优解的信息,逐步逼近问题的最优解。在本应用中,PSO被专门用于搜寻SVM中影响模型性能的两个关键参数——正则化参数C与核函数参数γ的最优组合。 项目所提供的实现代码涵盖了从数据加载、预处理(如标准化处理)、基础SVM模型构建到PSO优化流程的完整步骤。优化过程会针对不同的核函数(例如线性核、多项式核及径向基函数核等)进行参数寻优,并系统评估优化前后模型性能的差异。性能对比通常基于准确率、精确率、召回率及F1分数等多项分类指标展开,从而定量验证PSO算法在提升SVM模型分类能力方面的实际效果。 本研究通过一个具体的MATLAB实现案例,旨在演示如何将全局优化算法与机器学习模型相结合,以解决模型参数选择这一关键问题。通过此实践,研究者不仅能够深入理解SVM的工作原理,还能掌握利用智能优化技术提升模型泛化性能的有效方法,这对于机器学习在实际问题中的应用具有重要的参考价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值