1 技巧
只写列表名---->引用整个列表
len():列表长度,从1开始数
续行字符\
print('当一行代码太长时' + \
'可以换行')
序列型数据:列表、字符串、由range()返回的范围对象、元组;对列表可以进行的操作(如切片等),都可以对序列型数据进行
2 索引
从0开始
print(['a', 'b', 'c'][1])
num = ['a', 'b', 'c']
print(num[-1])
print(num[-2])
3 切片
# 切片:左闭右开
num = ['a', 'b', 'c', 'd']
print(num[1:4])
# 省略第一个索引===》使用索引0或者从列表的开始处开始
print(num[:3])
# 省略第二个索引===》使用列表长度
print(num[1:])
4 连接
# + 可以合并两个列表成一个新列表
nums1 = [1, 2, 3, 4]
nums2 = [4, 5, 6, 7]
print('第一次输出')
print(nums1 + nums2)
num = 5
print('第二次输出')
print(nums1 + [num])
5 复制
# *可以将列表复制n次
nums1 = [1, 2, 3, 4]
nums2 = [4, 5, 6, 7]
print('第一次输出')
print(nums1*3)
6 从键盘输入列表
# 从键盘输入猫的名字
cat_names = []
while True:
print('enter name of cat' + ' ' + str(len(cat_names) + 1) + ' ' + 'or enter nothing to exit')
name = input()
if name == '':
break
cat_names = cat_names + [name]
print('the cat are')
for name in cat_names:
print(name)
7 列表循环
words = ['baby', 'hello', 'hi', 'good']
print('循环方式一:直接遍历')
for word in words:
print(word)
print('循环方式二:用下标遍历')
for i in range(len(words)):
print(words[i])
8 in 和 not in
words = ['baby', 'hello', 'hi', 'good']
print('1')
print('baby' not in words)
print('2')
if 'hi' in words:
print('**************')
9 多重赋值
words = ['baby', 'hello', 'hi', 'good']
# 变量的数目和列表的长度必须相等
word1, word2, word3, word4 = words
print(word1)
print(word2)
print(word3)
print(word4)
10 方法
列举enumerate()
words = ['baby', 'hello', 'hi', 'good']
# 需要索引+值的时候很方便
# 需要注意 index是int类型,需要进行转换
for index, item in enumerate(words):
print('第' + str(index) + '个值是' + item)
random.choice()
from random import *
words = ['baby', 'hello', 'hi', 'good']
word = choice(words)
print('从列表中随机选择一个值')
print(word)
random.shuffle()
from random import *
words = ['baby', 'hello', 'hi', 'good']
shuffle(words)
print('把列表的值随机打乱')
print(words)
index()
# index()方法用于查找值的索引
words = ['baby', 'hello', 'baby', 'hi', 'good']
print('多次出现,则返回第一次出现的索引值')
print(words.index('baby'))
append()
# 返回值是None
words = ['baby', 'hello', 'baby', 'hi', 'good']
print('将元素附加到列表末尾')
print('方法必须跟在要作用的值之后')
words.append('last')
print(words)
insert()
# 返回值是None
words = ['baby', 'hello', 'baby', 'hi', 'good']
print('将元素插入到列表中')
print('方法必须跟在要作用的值之后')
print('第一个参数:要插入的索引值')
print('第二个参数:要插入的值')
words.insert(2, 'second')
print(words)
del
words = ['baby', 'hello', 'baby', 'hi', 'good']
print('用索引删除元素')
del words[0]
print(words)
remove()
words = ['baby', 'hello', 'baby', 'hi', 'good']
print('不知道元素的索引,用remove()')
words.remove('baby')
print(words)
sort()
words = ['baby', 'Hello', 'hello', 'Baby', 'hi', 'good']
print('按ASCII码来排序')
words.sort()
print(words)
print('按普通字典顺序来排序,会把所有元素都当成小写')
words.sort(key=str.lower)
print(words)
reverse()
words = ['baby', 'Hello', 'hello', 'Baby', 'hi', 'good']
print('反转列表的元素顺序')
words.reverse()
print(words)
list()
print('将元组转换为列表')
nums1 = (1, 2, 3, 4)
print('nums1的数据类型' + str(type(nums1)))
nums2 = list(nums1)
print('nums2的数据类型' + str(type(nums2)))
tuple()
print('将列表转换为元组')
nums1 = [1, 2, 3, 4]
print('nums1的数据类型' + str(type(nums1)))
nums2 = tuple(nums1)
print('nums2的数据类型' + str(type(nums2)))
id()及引用
print('改变变量的值,不会改变已经赋值的其他变量')
num1 = 75
print('num1的id')
print(id(num1))
num2 = num1
print('num2的id')
print(id(num2))
num1 = 78
print('改变后num1的id')
print(id(num1))
print('num2的id')
print(id(num2))
print('改变列表的值,会改变已经赋值的其他列表')
nums1 = [45, 25, 11, 33]
nums2 = nums1
print(nums2)
nums1[2] = 100
print('明明改变的是nums1的值,但是nums2的值也改变了')
print(nums2)
copy()1
import copy
print('copy()方法用来复制列表,这样改变复制的列表后,原列表不会发生变化。适用于要保留原列表的情况')
nums1 = [1, 5, 6, 9]
nums2 = copy.copy(nums1)
print('nums2的值为')
print(nums2)
nums1[0] = 55
print('改变了nums1后,nums2的值为')
print(nums2)
deepcopy()
import copy
print('deepcopy()方法用来复制列表,这样改变复制的列表后,原列表不会发生变化。适用于要保留原列表的情况')
print('与copy()方法的区别:当列表中还嵌套了列表,使用deepcopy()方法')
nums1 = [1, 5, 6, 9, [2, 5, 4]]
nums2 = copy.deepcopy(nums1)
print('nums2的值为')
print(nums2)
nums1[0] = 55
print('改变了nums1后,nums2的值为')
print(nums2)
11 元组类型
print('区别一:元组用();列表用[]')
print('区别二:元组中的数据不可变;列表中数据可变')
nums1 = (1, 2, 3, 4)
nums2 = [1, 2, 3, 4]
print('nums1的数据类型'+str(type(nums1)))
print('nums2的数据类型'+str(type(nums2)))
print('-----------------------------------------')
print('如果元组中只有一个值,需要附加一个,')
print('用来和普通的变量区分')
nums3=(2,)
nums4=3
print('nums3的数据类型'+str(type(nums3)))
print('nums4的数据类型'+str(type(nums4)))
课后习题
逗号代码p85
"""
1、接收从键盘输入的列表保存为spam
2、定义函数method(spam):
拆分出列表的每一项
"""
def method(spam):
str1 = ''
spam[-1] = 'and ' + spam[-1]
for item in spam:
if item == spam[-1]:
str1 += item
else:
str1 += item + ','
print(str1)
print('请输入一个列表')
spam = []
while True:
str0 = input()
if str0 == '':
break
spam = spam + [str0]
method(spam)
掷硬币的连胜
import random
numberOfStreaks = 0
coins = []
for experimentNumber in range(1000):
coins.append(random.randint(0, 1))
for i in range(995):
if coins[i] == coins[i + 1] == coins[i + 2] == coins[i + 3] == coins[i + 4] == coins[i + 5]:
numberOfStreaks += 1
print('chance of streak:%s%%' % (numberOfStreaks / 100))
"""
数组下标
range(10):说明数组中存的0-9,列表下标也是0-9
"""
字符图网格
grid = [['.', '.', '.', '.', '.', '.'],
['.', '0', '0', '.', '.', '.'],
['0', '0', '0', '0', '.', '.'],
['0', '0', '0', '0', '0', '.'],
['.', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '.'],
['0', '0', '0', '0', '.', '.'],
['.', '0', '0', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
for i in range(len(grid[0])):
for j in range(len(grid)):
print(grid[j][i] + ' ', end='')
print()