第2章 列表和元组

2.1 序列概述
列表可修改,元组不可修改。

>>> edward = ['Edward Gumby',42]
>>> john = ['John Smith',50]
>>> database = [edward,john]
>>> database
[['Edward Gumby', 42], ['John Smith', 50]]
>>> 

2.2 通用的序列操作

2.2.1 索引

#  将以数指定年、月、日的日期打印出来
months = [
    'Jan',
    'Feb',
    'March',
    'April',
    'May',
    'June',
    'July',
    'August',
    'Sep',
    'Oct',
    'Nov',
    'Dec'
    ]
# 一个列表,其中包含数1~31对应的结尾
endings = ['st','nd','rd'] + 17 * ['th'] \
          + ['st','nd','rd'] + 7 * ['th'] \
          + ['st']
year = input('Year: ')
month = input('Month(1-12): ')
day = input('Day(1-31): ')
month_number = int(month)
day_number = int(day)
month_name = months[month_number-1]
ordinal = day + endings[day_number-1]
print(month_name + ' ' + ordinal + ', ' + year)

2.2.2 切片

#从url中提取域名
url = input('Please enter the URL: ')
domain = url[11:-4]
print("Domain name: " + domain)

2.2.3 序列相加

>>> [1,2,3] + [4,5,6]
[1, 2, 3, 4, 5, 6]
>>> 'Hello,' + "world!"
'Hello,world!'
>>> 

2.2.4 乘法

>>> 'python' * 5
'pythonpythonpythonpythonpython'
>>> [42] * 10
[42, 42, 42, 42, 42, 42, 42, 42, 42, 42]
>>> 
#在位于屏幕中央且宽度合适的方框内打印一个句子

sentence = input("Sentence: ")
screen_width = 80
text_width = len(sentence)
box_width = text_width + 6
left_margin = (screen_width - box_width) // 2

print()
print(' ' * left_margin + '+' + '-' * (box_width-2) + '+')
print(' ' * left_margin + '|  ' + ' ' * text_width + '  |')
print(' ' * left_margin + '|  ' +  sentence + '  |' )
print(' ' * left_margin + '|  ' + ' ' * text_width + '  |')
print(' ' * left_margin + '+' + '-' * (box_width-2) + '+')
print()

2.2.5 成员资格

#检查用户名和PIN码
database = [
    ['albert','1234'],
    ['abcd','2345']
]
username = input('User name: ')
pin = input('PIN code: ')

if[username,pin] in database : print('Access granted')

长度、最小值和最大值

>>> numbers = [100,34,678]
>>> len(numbers)
3
>>> max(numbers)
678
>>> min(numbers)
34
>>> 

2.3 列表:Python的主力
列表是可变的,即可修改其内容。

2.3.1 函数list

>>> list('Hello')
['H', 'e', 'l', 'l', 'o']
>>> 

2.3.2 基本的列表操作

  1. 修改列表:给元素赋值
>>> x = [1,1,1]
>>> x[1] = 2
>>> x
[1, 2, 1]
>>> 
  1. 删除元素
    使用del语句
>>> names = ['a','b','c']
>>> del names[1]
>>> names
['a', 'c']
>>> 

3 给切片赋值

>>> names = ['a','b','c']
>>> del names[1]
>>> names
['a', 'c']
>>> name = list('Perl')
>>> name
['P', 'e', 'r', 'l']
>>> name[2:] = list('ar')
>>> name
['P', 'e', 'a', 'r']
>>> 

2.3.3 列表方法
1.append

>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]
>>> 

2.clear

>>> list = [1,2,3]
>>> list.clear()
>>> list
[]
>>> 

3,copy

>>> a = [1,2,3]
>>> b = a
>>> b[1] = 4
>>> a
[1, 4, 3]
>>> 
>>> a = [1,2,3]
>>> b = a.copy()
>>> b[1] = 4
>>> a
[1, 2, 3]
>>> 
>>> 

4 count

>>> x = [1,1,2]
>>> x.count(1)
2
>>> 

5 extend

>>> a = [1,2]
>>> b = [3,4]
>>> a.extend(b)
>>> a
[1, 2, 3, 4]
>>> 

6 index

>>> a = [1,2,3,4]
>>> a.index(3)
2
>>> 

7 insert

>>> a
[1, 2, 3, 4]
>>> a.insert(2,'four')
>>> a
[1, 2, 'four', 3, 4]
>>> 

8 pop

>>> a
[1, 2, 'four', 3, 4]
>>> a.pop()
4
>>> a
[1, 2, 'four', 3]
>>>

9 remove

>>> a
[1, 2, 'four', 3]
>>> a.remove('four')
>>> a
[1, 2, 3]
>>> 

10 reverse

>>> a
[1, 2, 3]
>>> a.reverse()
>>> a
[3, 2, 1]
>>> 

11 sort

>>> a = [4,6,2,1,7,9]
>>> a.sort()
>>> a
[1, 2, 4, 6, 7, 9]
>>> 

12 高级排序

>>> x = ['aardvark','abalone','acme','add','aerate']
>>> x.sort(key=len)
>>> x
['add', 'acme', 'aerate', 'abalone', 'aardvark']
>>> x.sort(key=len,reverse=True)
>>> x
['aardvark', 'abalone', 'aerate', 'acme', 'add']
>>> 

2.4 元组:不可修改的序列
元组不能修改。
元组语法很简单,只要将一些值用逗号分隔,就能自动创建一个元组,另外,元组还可用圆括号括起。

>>> 1,2,3
(1, 2, 3)
>>> (1,2,3)
(1, 2, 3)
>>> 

2.5 小结

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值