哇,通宵两个晚上,我裂开了,我学了啥?

Python格式化字符串 PS:是在3.6版本之后嗷
a, b = 5, 10
print(f'{a} * {b} = {a * b}')
列表list PS:好像。。跟C中的数组一样?

list1 = [1, 3, 5, 7, 100] #定义?应该是这种说法吧。。
print(list1) # [1, 3, 5, 7, 100]
# 乘号表示列表元素的重复
list2 = ['hello'] * 3
print(list2) # ['hello', 'hello', 'hello']
# 计算列表长度(元素个数)
print(len(list1)) # 5
# 下标(索引)运算
print(list1[0]) # 1
print(list1[4]) # 100
# print(list1[5]) # IndexError: list index out of range 与c中的超出索引值差不多?
print(list1[-1]) # 100
print(list1[-3]) # 5
为什么list1[-3]的值是5呢? 大概是索引是负数的话就是从左边开始过去第三为数?比如在这个例子中是[1,3,5,7,100]索引为-3时是从左边开始的-3=5 ;
-2=7 ;-1=100 大概是这个亚子?
list1[2] = 300
print(list1) # [1, 3, 300, 7, 100]
# 通过循环用下标遍历列表元素
for index in range(len(list1)):
print(list1[index])
# 通过for循环遍历列表元素
for elem in list1:
print(elem)
# 通过enumerate函数处理列表之后再遍历可以同时获得元素索引和值
for index, elem in enumerate(list1):
print(index, elem)
list1 = [1, 3, 5, 7, 100]
下面是给列表list添加元素哇
# 添加元素
list1.append(200)
list1.insert(1, 400)
# 合并两个列表
# list1.extend([1000, 2000])
list1 += [1000, 2000]
print(list1) # [1, 400, 3, 5, 7, 100, 200, 1000, 2000]
print(len(list1)) # 9
# 先通过成员运算判断元素是否在列表中,如果存在就删除该元素
if 3 in list1:
list1.remove(3)
if 1234 in list1:
list1.remove(1234)
print(list1) # [1, 400, 5, 7, 100, 200, 1000, 2000]
# 从指定的位置删除元素
list1.pop(0)
list1.pop(len(list1) - 1)
print(list1) # [400, 5, 7, 100, 200, 1000]
# 清空列表元素
list1.clear()
print(list1) # []

网上找的关于列表的讲解 还是能很直观的明白来着
jlist = ["beijing", "shanghai", "guangzhou", "shenzhen", "xianggang", "taiwan"]
'''
按照上述展示下标从0 - 5
开始结束位置的原则是:含头不含尾,就是结束位有实际位时,都不取
步长2代表每2个取第一个,3
代表每三个取第一个
步长为 - N时,代表从后向前截取,仍然是每N个取一个
'''
# 截取结果含头不含尾
print(jlist[:]) #['beijing', 'shanghai', 'guangzhou', 'shenzhen', 'xianggang', 'taiwan']
print(jlist[::2]) #['beijing', 'guangzhou', 'xianggang']
print(jlist[::-1]) #['taiwan', 'xianggang', 'shenzhen', 'guangzhou', 'shanghai', 'beijing']
print(jlist[::-2]) # ['taiwan', 'shenzhen', 'shanghai']
print(jlist[0:3]) # ['beijing', 'shanghai', 'guangzhou']
print(jlist[0:-1]) # ['beijing', 'shanghai', 'guangzhou', 'shenzhen', 'xianggang']
print(jlist[3:]) # ['shenzhen', 'xianggang', 'taiwan']
print(jlist[:-3]) # ['beijing', 'shanghai', 'guangzhou']片
————————————————

本文为CSDN博主「mengy_0227」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013279518/article/details/89019676

我们还可以使用列表的生成式语法来创建列表,代码如下所示。

f = [x for x in range(1, 10)]
print(f)
f = [x + y for x in 'ABCDE' for y in '1234567']
print(f)
# 用列表的生成表达式语法创建列表容器
# 用这种语法创建列表之后元素已经准备就绪所以需要耗费较多的内存空间
f = [x ** 2 for x in range(1, 1000)]
print(sys.getsizeof(f)) # 查看对象占用内存的字节数
print(f)
# 请注意下面的代码创建的不是一个列表而是一个生成器对象
# 通过生成器可以获取到数据但它不占用额外的空间存储数据
# 每次需要数据的时候就通过内部的运算得到数据(需要花费额外的时间)
f = (x ** 2 for x in range(1, 1000))
print(sys.getsizeof(f)) # 相比生成式生成器不占用存储数据的空间
print(f)
for val in f:
print(val)

字符串:在Python中,如果我们把单个或多个单引号或者双引号包围起来,就可以表示一个字符串
可以在字符串中使用\(反斜杠)来表示转义,也就是说\后面的字符不再是它原来的意义,例如:\n不是代表反斜杠和字符n,而是表示换行;而\t也不是代表反斜杠和字符t,而是表示制表符。所以如果想在字符串中表示'要写成\',同理想表示\要写成\\。可以运行下面的代码看看会输出什么。

s1 = '\'hello, world!\''
s2 = '\n\\hello, world!\\\n'
print(s1, s2, end='')

Python中还有另外一种定义生成器的方式,就是通过yield关键字将一个普通函数改造成生成器函数。下面的代码演示了如何实现一个生成斐波拉切数列的生成器。所谓斐波拉切数列可以通过下面递归的方法来进行定义:
def fib(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
yield a


def main():
for val in fib(20):
print(val)


if __name__ == '__main__':
main()

猜你喜欢

转载自www.cnblogs.com/linQingxuan/p/11876033.html