零基础入门python3.7 ——基础知识总结(十四) python的特性归纳

一。切片

  • 示例1
a = ['java', 'python', 'javascript', 'c', 'c++', 'php', 'css', 'html5', 'go']
print(a[1:4])

['python', 'javascript', 'c']

表示从索引1开始到索引4结束,但是不包括索引4。

  • 示例2
a = ['java', 'python', 'javascript', 'c', 'c++', 'php', 'css', 'html5', 'go']
print(a[:4])

['java', 'python', 'javascript', 'c']

表示从索引0开始到索引4结束。 但是不包括索引4。

  • 示例3
a = ['java', 'python', 'javascript', 'c', 'c++', 'php', 'css', 'html5', 'go']
print(a[-4:])

['php', 'css', 'html5', 'go']

表示从索引-4开始到结束

  • 示例4
a = ['java', 'python', 'javascript', 'c', 'c++', 'php', 'css', 'html5', 'go']
print(a[1:6:2])

['python', 'c', 'php']

表示索引1到索引6之间每隔两个元素取一个

示例5 

a = ['java', 'python', 'javascript', 'c', 'c++', 'php', 'css', 'html5', 'go']
print(a[::])

['java', 'python', 'javascript', 'c', 'c++', 'php', 'css', 'html5', 'go']

取整个列表

说明:切片可用于列表。 元组。 字符串。

二。迭代

示例1 

迭代列表

a = ['java', 'python', 'javascript', 'c', 'c++', 'php', 'css', 'html5', 'go']

for key in a:
    print(key)

java
python
javascript
c
c++
php
css
html5
go
  • 示例2

迭代字典的key

b = {
    "name": "张晓明",
    "age": 23,
    "city": "成都市"
}

for key in b:
    print(key)

name
age
city
  • 示例3

迭代字典的value

b = {
    "name": "张晓明",
    "age": 23,
    "city": "成都市"
}

for value in b.values():
    print(value)

张晓明
23
成都市
  • 示例4

迭代字典的key和value

b = {
    "name": "张晓明",
    "age": 23,
    "city": "成都市"
}

for item in b.items():
    print(item)

('name', '张晓明')
('age', 23)
('city', '成都市')

注意。因为dict的存储不是按照list的方式顺序排列,迭代出的结果顺序可能不一样。

  • 示例5

迭代字符串

b = 'python'

for key in b:
    print(key)

p
y
t
h
o
n
  • 示例6

迭代元组

a = ('java', 'python', 'javascript', 'c', 'c++', 'php', 'css', 'html5', 'go')

for key in a:
    print(key)

java
python
javascript
c
c++
php
css
html5
go
  • 示例7

collections.abc模块的Iterable类型判断对象是否可以被迭代。

from collections.abc import Iterable
a = ('java', 'python', 'javascript', 'c', 'c++', 'php', 'css', 'html5', 'go')

print(isinstance(a, Iterable))
print(isinstance("python", Iterable))
print(isinstance(123, Iterable))

True
True
False
  • 示例8

通过enumerate函数获得下标

a = ('java', 'python', 'javascript', 'c', 'c++', 'php', 'css', 'html5', 'go')

for index, value in enumerate(a):
    print(index, value)


0 java
1 python
2 javascript
3 c
4 c++
5 php
6 css
7 html5
8 go

三。列表生成

  • 示例1 

生成1-10的列表

a = list(range(1, 11))
print(a)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  • 示例2

生成如1,4,9,16一样的列表

a = [x * x for x in range(1, 11)]
print(a)

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  • 示例3 

生成1,4,6,8一样的列表

a = [x * 2 for x in range(1, 11)]
print(a)

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
  • 示例4

加上条件生成列表

a = [x * x for x in range(1, 11) if x % 2 == 0]
print(a)

[4, 16, 36, 64, 100]
  • 示例5

双层循环生成列表

a = [x * n for x in range(1, 6) for n in range(2, 7)]
print(a)

[2, 3, 4, 5, 6, 4, 6, 8, 10, 12, 6, 9, 12, 15, 18, 8, 12, 16, 20, 24, 10, 15, 20, 25, 30]
  • 示例6

双层循环家条件生成列表

a = [x * n for x in range(1, 6) for n in range(2, 7) if x % 2 == 0]
print(a)

[4, 6, 8, 10, 12, 8, 12, 16, 20, 24]
  • 示例7 

两个变量生成列表

a = [x + y for x, y in enumerate(range(1, 6))]
print(a)

[1, 3, 5, 7, 9]
  • 示例8

if语句在for语句后时不能加else。 因为此时if语句是一个筛选条件

a = [x + y for x, y in enumerate(range(1, 6)) if x % 2 == 0]
print(a)

[1, 5, 9]


a = [x + y for x, y in enumerate(range(1, 6)) if x % 2 == 0 else y % 2 == 0]
print(a)

 a = [x + y for x, y in enumerate(range(1, 6)) if x % 2 == 0 else y % 2 == 0]
SyntaxError: invalid syntax
  • if写在for前面必须加else,否则报错:这是因为for前面的部分是一个表达式,它的出的是一个结果
a = [x if x % 2 == 0 else "python" for x in range(1, 50)]
print(a)

['python', 2, 'python', 4, 'python', 6, 'python', 8, 'python', 10, 'python', 12, 'python', 14, 'python', 16, 'python', 18, 'python', 20, 'python', 22, 'python', 24, 'python', 26, 'python', 28, 'python', 30, 'python', 32, 'python', 34, 'python', 36, 'python', 38, 'python', 40, 'python', 42, 'python', 44, 'python', 46, 'python', 48, 'python']

---------------------------

a = [x if x % 2 == 0  for x in range(1, 50)]
print(a)

a = [x if x % 2 == 0  for x in range(1, 50)]
                            ^
SyntaxError: invalid syntax

-----------------------------

a = [x * y if x % 2 == 0 else "python" for x, y in enumerate(range(1, 50))]
print(a)

[0, 'python', 6, 'python', 20, 'python', 42, 'python', 72, 'python', 110, 'python', 156, 'python', 210, 'python', 272, 'python', 342, 'python', 420, 'python', 506, 'python', 600, 'python', 702, 'python', 812, 'python', 930, 'python', 1056, 'python', 1190, 'python', 1332, 'python', 1482, 'python', 1640, 'python', 1806, 'python', 1980, 'python', 2162, 'python', 2352]

 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值