day05-列表

2018-07-20  本文已影响0人  奈斯凸米特

1.输出函数:print()

  1. 默认每一个print函数,输出完内容之后会输出一个换行
  2. 一个print函数输出多个内容的时候,内容之间是用空格隔开的
  3. 内容后边加end=来设置结束标志(默认是'\n')
  4. 通过设置sep的值,来设置多个内容之间的间隔符(默认是' ')
print('aaa', 100, end='\n', sep=',')
print('bb')

结果:

aaa,100
bb

2. 输入函数:input()函数

  1. input()函数可以接收从控制台输入的内容(以回车为结束标志)
  2. input函数会阻塞线程,程序执行到input的时候会停下来,等待用户的输入,输入完成后才会接着执行下面的内容
  3. 接收到的数据是以字符串的形式返回的(python2.x中输入的是数字的时候,可能返回int类型或者浮点型数据)
value = input('请输入:')
print('aaa', value, type(value))

结果:

请输入:12
aaa 12 <class 'str'>

练习:猜数字游戏

随机产生一个1-100的整数,输入的数字如果和产生的随机数是一样的,就提示猜对了,并且游戏结束
如果输入的数大于或者小于随机数,就提示输入的数字偏大或者偏小,然后让重新输入

import random
number = random.randint(1, 100)
count = 0
while True:
    value = int(input('猜:'))
    count += 1
    if number == value:
        if count >= 6:
            print('智商着急')
        if count == 1:
            print('运气不错')
        print('对了')
        break
    elif number > value:
        print('小了,重新猜:')
    elif number < value:        # 或者直接else:
        print('大了,重新猜:')

结果:

猜:50
大了,重新猜:
猜:20
小了,重新猜:
猜:40
大了,重新猜:
猜:30
小了,重新猜:
猜:38
大了,重新猜:
猜:35
小了,重新猜:
猜:36
智商着急
对了

3. 列表、字典、元组、集合都是序列,都是容器类型的数据类型

列表(list):用来存储多个数据的一种数据类型。里面存储的单个数据,我们叫元素
特点:1. 有序的 2. 可变的(可变指的是容器中的内容的个数和值可变) 3. 元素可以是任何类型的数据
列表的值:用[] 将列表中的元素括起来,多个元素之间用逗号隔开。[] --> 空列表

  1. 怎么声明一个列表
    a. 声明一个变量,赋一个列表值
list1 = []      # 创建一个空的列表
print(type(list1))

结果:

<class 'list'>
list2 = [1, 2.4, 'abc', True, [1, 2], {'a': 1}]
print(list2, type(list2))

结果:

[1, 2.4, 'abc', True, [1, 2], {'a': 1}] <class 'list'>

b. 将其他的数据类型转换成列表

list3 = list('asd12')
print(list3)

结果:

['a', 's', 'd', '1', '2']

c. 将取出来的值乘以2创建一个列表

list4 = list(i*2 for i in range(10))
print(list4)

结果:

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

d. 创建一个100以内3的倍数的列表

list5 = list(i for i in range(100) if i % 3 == 0)
print(list5)

结果:

[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
  1. 获取列表元素
    列表中的每一个元素都对应一个下标:0 ~ 列表长度-1 ; -1 ~ - 列表长度
    names = ['哮天犬', '小狗', '孙悟空', '老沙', 'Faker']
    a. 获取单个元素
    • 列表名[下标]
    • 下标不能越界
print(names[1])
print(names[-3])

结果:

小狗
孙悟空

b. 获取部分元素(切片)

print(names[1:4])
print(names[-4:-1])
print(names[0:4:2])
print(names[:])     # 获取列表中的所有元素,重新创建一个新的列表

结果:

['小狗', '孙悟空', '老沙']
['小狗', '孙悟空', '老沙']
['哮天犬', '孙悟空']
['哮天犬', '小狗', '孙悟空', '老沙', 'Faker']

c. 一个一个的获取列表的所有元素(遍历列表)
scores = [12, 89, 43, 36, 98, 34, 56]
for循环遍历:

for item in scores:
        print(item)

结果:

12
89
43
36
98
34
56

while循环遍历:

index = 0
while index < len(scores):
    print(scores[index])
    index += 1

结果:

12
89
43
36
98
34
56
  1. 获取列表的长度(获取列表元素的个数)
    len(列表)
    print(len(scores))
    结果:
7

4. 添加列表元素

skills = []
print(skills)

结果:

[]
  1. append函数
    列表.append(元素)
    在列表的末尾添加一个元素
skills.append('龟派气功')
print(skills)
skills.append('居里夫人')
print(skills)

结果:

['龟派气功']
['龟派气功', '居里夫人']
  1. insert函数
    列表.insert(下标,元素)
    在列表的指定的下标前插入一个元素

注意:在这儿,下标可以越界,如果越界,就会插入到列表的最前面或者最后面

skills.insert(1, '无敌风火轮')
print(skills)

结果:

['龟派气功', '无敌风火轮', '居里夫人']
  1. 加:+
    列表1 + 列表2
    将列表2中的元素和列表1中的元素合并后创建一个新的列表
new_skills = skills + ['如来神掌', '一个达布妞']
print(new_skills)

结果:

['龟派气功', '无敌风火轮', '居里夫人', '如来神掌', '一个达布妞']

练习:从控制台输入10个学生的成绩,然后保存在一个列表中

scores = []
for _ in range(10):
    score = float(input('输入学生的成绩:'))
    scores.append(score)
print(scores)

结果:

输入学生的成绩:1
输入学生的成绩:2
输入学生的成绩:3
输入学生的成绩:4
输入学生的成绩:5
输入学生的成绩:6
输入学生的成绩:7
输入学生的成绩:8
输入学生的成绩:9
输入学生的成绩:10
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]

5. 删除列表元素

注意:不管是添加元素还是删除元素,都会重新分配下标
films = ['天线宝宝', '一人之下', '我不是药神', '神奇宝贝', '植物大战僵尸', '天线宝宝']

  1. del语句
    del语句可以删除任何数据
    del 列表[下标]:删除列表中指定下标的元素
    注意:这里的下标不能越界
del films[1]
print(films)

结果:

['天线宝宝', '我不是药神', '神奇宝贝', '植物大战僵尸', '天线宝宝']
  1. remove方法
    列表.remove(元素):删除列表中的指定的元素(如果同一个元素有多个,只删除最前面那一个)
    注意:如果要删除的元素不在列表中,会报错
films.remove('天线宝宝')
print(films)

结果:

['我不是药神', '神奇宝贝', '植物大战僵尸', '天线宝宝']
  1. pop方法
    列表.pop():将列表中的最后一个元素取出来
    列表.pop(下标):将列表中指定下标的元素取出来
    注意:这里的下标不能越界
film = films.pop()
print(film)

film = films.pop(1)
print(films, film)

结果:

天线宝宝
['我不是药神', '植物大战僵尸'] 神奇宝贝

练习:scores = [23,31,78,56,89,68,1,97],删除所有小于60分的成绩

scores = [23, 31, 78, 56, 89, 68, 1, 97]
for score in scores[:]:     # 这里的scores[:] 相当于[23, 31, 78, 56, 89, 68, 1, 97],一个新的地址,只更新不用它
    if score < 60:
        scores.remove(score)
print(scores)

结果:

[78, 89, 68, 97]

作业:

  1. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是⼀一个数字。例例如2+22+222+2222+22222(此时共有5个数相 加),⼏几个数相加有键盘控制
a = int(input('请输入a的值:'))
time = int(input('请输入有几个数相加:'))
sum = 0
num = 0
for i in range(time):
    num = num * 10 + a
    sum = sum + num
print('结果为:',sum)

结果:

请输入a的值:2
请输入有几个数相加:5
结果为: 24690
  1. 打印图形1
    n = 4
    @
    @@
    @@@
    @@@@
    n = 5
    @
    @@
    @@@
    @@@@
    @@@@@
n = int(input('请输入n:'))
for i in range(1, n+1):
    for j in range(1, i+1):
        print('@', end='')
    print('')
请输入n:5
@
@@
@@@
@@@@
@@@@@
  1. 打印图形2


    22.png
n = int(input('请输入n:'))
for i in range(1,n+1):
    print(' '*(n-((2*i-1)//2)-1) + '@'*(2*i-1))
请输入n:5
    @
   @@@
  @@@@@
 @@@@@@@
@@@@@@@@@
  1. 打印图形3
    n = 3
    @@@
    @@
    @
n = int(input('输入n:'))
for i in range(1,n+1):
    print('@'*(n-i+1))
输入n:3
@@@
@@
@
  1. 输入两个正整数m和n,求其最大公约数和最小公倍数。
num1 = int(input('请输入第一个数:'))
num2 = int(input('请输入第二个数:'))
min1 = min(num1,num2)
max1 = max(num1,num2)
big = []
for i in range(1,min1+1):
    if num1 % i == 0 and num2 % i == 0:
        big.append(i)
    for j in range(max1,num1*num2 + 1):
        if j % num1 == 0 and j % num2 == 0:
            break
print('最小公倍数:', j)
print('最大公约数:', max(big))
请输入第一个数:4
请输入第二个数:18
最小公倍数: 36
最大公约数: 2
  1. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数
for i in range(1, 1001):
    sum = 0
    for j in range(1, i):
        if i % j == 0:
            sum = sum + j
            if sum == i:
                print(i)
6
24
28
496
  1. 输出9*9口诀
for i in range(1, 10):
    for j in range(1, i+1):
        num = i * j
        print('%d*%d=%d  ' % (j,i, num),end = '')
    print()
1*1=1  
1*2=2  2*2=4  
1*3=3  2*3=6  3*3=9  
1*4=4  2*4=8  3*4=12  4*4=16  
1*5=5  2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6  2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7  2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8  2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9  2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81
  1. 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
num = int(input('请输入一个五位数:'))
ge = num % 10
shi = num % 100 // 10
qian = num % 10000 // 1000
wan = num // 10000
if ge == wan and shi == qian:
    print('%d是回文数' % (num))
elif len(str(num)) != 5:
    print('你输入的不是五位数')
else:
    print('%d不是回文数' % (num))
请输入一个五位数:12333
12333不是回文数
请输入一个五位数:12321
12321是回文数
请输入一个五位数:123
你输入的不是五位数
  1. 打印图形(菱形)


n = int(input('请输入n:'))
for i in range(1, n+1):
    print(' '*(n-((2*i-1)//2)-1) + '@' * (2*i-1))
for j in range(1, n):
    print(' '*j + '@' * (2*(n-j)-1) )
请输入n:4
   @
  @@@
 @@@@@
@@@@@@@
 @@@@@
  @@@
   @
  1. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
a = input('请输入一行字符:')
letter = 0
space = 0
number = 0
other = 0
for i in range(len(a)):
    if a[i].isalpha():
        letter += 1
    elif a[i].isspace():
        space += 1
    elif a[i].isdigit():
        number += 1
    else:
        other += 1
print('字母有%d个,空格有%d个,数字有%d个,其他字符有%d个' % (letter, space, number, other))
请输入一行字符:123ad * &
字母有2个,空格有2个,数字有3个,其他字符有2个
  1. 已知一个列表,求列表中心元素。
list1 = [1, 2, 3, 4, 5]
a = len(list1)
print(list1[a//2])
3
  1. 已知一个列列表,求所有元素和。
list1 = [1,2,3,4,5]
sum1 = 0
for i in range(len(list1)):
    sum1 += int(list1[i])
print(sum1)
15
  1. 已知一个列表,输出所有奇数下标元素。
list1 = [1,2,3,4,5]
len1 = len(list1)
list2 = []
for i in range(len1):
    if i % 2 == 0:
        list2.append(list1[i])
print('奇数下标元素为:',list2)
奇数下标元素为: [1, 3, 5]
  1. 已知一个列表,输出所有元素中,值为奇数的。
list1 = [1,2,3,4,5]
list2 = []
for i in range(len(list1)):
    if list1[i] % 2 != 0:
        list2.append(list1[i])
print('值为奇数的有:',list2)
值为奇数的有: [1, 3, 5]
  1. 已知一个列表,将所有元素乘二。
list1 = [1, 2, 3, 4, 5]
list2 = []
for i in range(len(list1)):
    list2.append(list1[i] * 2)
print(list2)
[2, 4, 6, 8, 10]
  1. 已知一个列表,将所有元素加到第一个元素中。
list1 = [1, 2, 3, 4, 5]
sum1 = 0
for i in range(len(list1)):
    sum1 += list1[i]
list1.insert(0,sum1)
print(list1)
[15, 1, 2, 3, 4, 5]
  1. 已知一个列表A,将奇数位置元素存到B列表中,偶数元素存到C列表中。
list1 = [1, 2, 3, 4, 5]
B = []
C = []
for i in range(len(list1)):
    if i % 2 == 0:
        B.append(list1[i])
    else:
        C.append(list1[i])
print('奇数列表:',B,'\n','偶数列表:',C)
奇数列表: [1, 3, 5] 
 偶数列表: [2, 4]
  1. 把A列表的前5个元素复制到B列表中。
A = [1, 2, 3, 4, 5, 6, 7, 8]
B = []
for i in range(len(A)):
    if i <= 4:
        B.append(A[i])
print('A列表:',A)
print('B列表:',B)
A列表: [1, 2, 3, 4, 5, 6, 7, 8]
B列表: [1, 2, 3, 4, 5]
  1. 把1----36分别放入列表中,计算列表数组对角元素之和。6 * 6的列表
sum = 0
list1 = [[0 for _ in range(6)]for _ in range(6)]
for i in range(6):
    for j in range(6):
        list1[i][j] = i * 6 + j + 1
sum = list1[0][0] + list1[0][5] + list1[5][0] + list1[5][5]
print('对角元素和为',sum)
对角元素和为 74
  1. 有一个长度是10的列表,列表内有10个不重复的数字,要求按从大到小排序。
list1 = [1, 3, 2, 4, 6, 5, 7, 8, 10, 9]
for i in range(len(list1)-1):
    for j in range(i+1, len(list1)):
        if list1[i] < list1[j]:
            temp = list1[j]
            list1[j] = list1[i]
            list1[i] = temp
print(list1)
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
  1. 有一个长度是10的列表,要求删除某一个位置的元素
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
p = int(input('请输入要删除第几个元素:'))
del list1[p-1]
print('删除后的列表为:',list1)
请输入要删除第几个元素:2
删除后的列表为: [1, 3, 4, 5, 6, 7, 8, 9, 10]
  1. 有一个长度是10的列表,按递增排列,用户输入一个数,插入适当位置。
list1 = [1, 2, 3, 4, 5, 6, 11, 8, 9, 10]
num = int(input('请输入要插入的数字:'))
list1.append(num)
for i in range(len(list1)-1):
    for j in range(i+1, len(list1)):
        if list1[i] > list1[j]:
            temp = list1[j]
            list1[j] = list1[i]
            list1[i] = temp
print(list1)
请输入要插入的数字:7
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
  1. 有一个长度是10的列表,数 组内有10个人名,要求去掉重复的
list1 = ['孙悟空', '猪八戒', '沙悟净', '唐僧', '观音', '红孩儿', '孙悟空', '唐僧', '蜘蛛精', '佛祖']
for i in list1[:]:
    count = 0
    for j in list1[:]:
        if i == j:
            count += 1
            if count > 1:
                list1.remove(j)
print(list1)
['猪八戒', '沙悟净', '观音', '红孩儿', '孙悟空', '唐僧', '蜘蛛精', '佛祖']
  1. 把A列表的第三到第六位之间的元素删除。
A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
del A[2:5]
print(A)
[1, 2, 6, 7, 8, 9, 10]
  1. 已知A列表,B列表,定义一个列表C,要求C包含A,B数组中的数据(无重复值)。
A = [1, 2, 3, 4]
B = [3, 4, 5, 6]
C = []
for i in A[:]:
    for j in B[:]:
        if i == j:
            A.remove(i)
C = A + B
print(C)
[1, 2, 3, 4, 5, 6]
上一篇 下一篇

猜你喜欢

热点阅读