列表

一 输入输出函数

输出函数: print()函数

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

输入函数: input()函数

  1. input()函数可以接收从控制台输入的内容(以回车未结束标志)
  2. input函数会阻塞线程,程序执行到input的时候会停下来,等待用户的输入,输入完成后才会接着执行后面的内容
  3. 在python3中用户接受到的数据是以字符串的形式返回的
name = input('请输入一个整数:')
print(name,name.type())

二 列表

列表(list):用来存储多个数据的一种数据类型,里面存储的单个数据称为元素
序列:容器类型数据(列表,字典,元组,集合)

  • 特点:

  1. 有序的
  2. 可变的(容器中的内容的数量和值可变)
  3. 元素可以是任何类型的数据
  • 列表的值:

用[]将列表中的元素括起来,多个元素之间用逗号隔开.[]:空列表

转换:只有序列类型的数据可以转换成列表li=list(被转换的序列)
生成式:li=list(iforiinrange(100))

  1. 怎么声明一个列表
list1=[]#创建一个空的列表
print(type(list1))

list2=[1,12.9,'abc',[1,2,3],{'x':3,'y':'Y'}]
print(list2,type(list2))

生成式

li=list(i for i in range(10))
print(li)
li=list(i for i in range(10) if i % 3 == 0)
print(li)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 3, 6, 9]
  1. 获取列表元素列表中的元素都对应一个小标:0len-1;-1-len
    a. 获取单个元素:列表名[下标]下标不能月越界
names=['faker','uzi','ClearLove','fhgf']
print(names[2],names[-1])

b. 获取部分元素(切片)
列表名[起始下标:结束下标]
左闭右开返回的仍是列表

print(names[1:3],names[-3:-1])

列表名[起始下标:结束下标:步进]
左闭右开返回的仍是列表

print(names[0:4:2])
print(names[::-1])

起始下标和结束下标都可以缺省:
如果步进是正数,起始下标缺省就是从第一个元素开始获取;
如果步进为负数就是从最后一个元素开始获取
结束下标缺省,步进是正数,获取最后一个元素,步进是负数,从后往前获取到第一个元素

c. 一个一个的获取列表所有的元素(遍历列表)

foriinnames:
print(i)

i=0
whilei<len(names):
print(names[i])
i+=1
  1. 添加列表元素
    a. 列表名.append(元素)
    在列表的末尾添加一个元素
skills=[]
print(skills)
skills.append('炁体源流')
skills.append('拘灵遣将')
print(skills)

b. insert函数
在列表指定下标的前面插入一个元素
这里的下标可以越界,如果越界就会插入在列表的最前面或者最后面

skills.insert(1,'通天箓')
print(skills)
skills.insert(-1,'明魂术')
print(skills)
skills.insert(6,'六仙库贼')
print(skills)

c. +
列表1+列表2
将列表2中的元素和列表2的元素合并返回一个新的列表

lis = skills + names
print(lis)

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

scores=[]
for i in range(0,10):
    temp=float(input('请输入第%d个学生的成绩:'%(i+1)))
    while(temp>100ortemp<0):
        temp=float(input('请输入有效的成绩:'))
    scores.append(temp)
print(scores)

运行结果:

请输入第1个学生的成绩:54
请输入第2个学生的成绩:543
请输入有效的成绩:54
请输入第3个学生的成绩:67
请输入第4个学生的成绩:2
请输入第5个学生的成绩:656
请输入有效的成绩:45
请输入第6个学生的成绩:76
请输入第7个学生的成绩:867
请输入有效的成绩:65
请输入第8个学生的成绩:87
请输入第9个学生的成绩:34
请输入第10个学生的成绩:97
[54.0, 54.0, 67.0, 2.0, 45.0, 76.0, 65.0, 87.0, 34.0, 97.0]
  1. 删除列表元素
    a. del语句
    del可以删除任何数据
    del列表名[下标]:删除列表中指定下标的元素下标不能越界
films=['肖生克','阿甘正传','小翟总','老翟总','肖生克']
del films[1]
print(films)

b. remove方法
列表名.remove(元素):删除列表中的指定元素
如果有多个相同元素,只删除第一个,如果要删除的元素不在列表中会报错

films.remove('肖生克')
print(films)

c. 列表名.pop(下标)
弹出列表中指定下标的元素(如果下标缺省则弹出最后一个元素)

films_poped=[films.pop()]
print(films,films_poped)
films_poped.append(films.pop(0))
print(films,films_poped)

练习:scores=[23,45,45,78,32,90,89,1],删除所有小于60分的成绩

scores=[23,45,45,78,32,90,89,1]
for i in scores[:]:
    if i<60:
        scores.remove(i)
print(scores)

运行结果:

[78, 90, 89]

练习

  1. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是⼀一个数字。例如2+22+222+2222+22222(此时共有5个数相
    加),⼏几个数相加有键盘控制。
a = int(input('请输入0~9的任意数字:'))
n = int(input('请输入运算数量:'))
num = 0
print('%d' % (a),end='',sep='')
for i in range(0,n-1):
    temp = 0
    for x in range(0,i+2):
        temp += a * 10 ** x
    print(' + %d'%(temp),end='',sep='')
    num += temp
print(' = %d'%(num+a))

运行结果:

请输入0~9的任意数字:3
请输入运算数量:6
3 + 33 + 333 + 3333 + 33333 + 333333 = 370368
  1. 打印图形1
    n = 4
    @
    @@
    @@@
    @@@@
    n = 5
    @
    @@
    @@@
    @@@@
    @@@@@
n=int(input('请输入层数:'))
for x in range(0,n):
    print('@'*(x+1))

运行结果:

请输入层数:5
@
@@
@@@
@@@@
@@@@@
  1. 打印图形2
    n = 3
            @
        @@@
    @@@@@
    n == 4
                @
            @@@
        @@@@@
    @@@@@@@
n=int(input('请输入层数:'))
for x in range(0,n):
    print(' '*(n-(2*x-1)//2-2) + '@'*(2*x+1))

运行结果:

请输入层数:5
    @
   @@@
  @@@@@
 @@@@@@@
@@@@@@@@@

  1. 打印图形3
    n = 3
    @@@
    @@
    @
n=int(input('请输入层数:'))
for x in range(0,n):
    print('@'*(n-x))

运行结果:

请输入层数:5
@@@@@
@@@@
@@@
@@
@

  1. 输⼊入两个正整数m和n,求其最⼤大公约数和最⼩小公倍数。
print('求m和n的最大公约数和最小公倍数')
m = int(input('请输入m的值:'))
n = int(input('请输入n的值:'))
li = []
for x in range(1,min(m,n)+1):
    if m%x==0 and n%x==0:
        li.append(x)
print('m和n的最大公约数是:%d'%(max(i for i in li)))
i = max(m,n)
while True:
    if i%m == 0 and i%n == 0:
        print('m和n的最小公倍数是:%d' % (i))
        break
    i+=1

运行结果:

求m和n的最大公约数和最小公倍数
请输入m的值:6
请输入n的值:12
m和n的最大公约数是:6
m和n的最小公倍数是:12
  1. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数
n = 1000
li = []
for x in range(1,n+1):
    count = 0
    for i in range(1,x):
        if x%i==0:
            count+=i
    if count==x:
        li.append(count)
print('1000以内的所有完数:',li)

运行结果:

1000以内的所有完数: [6, 28, 496]
  1. 输出9*9⼝口诀
for x in range(1,10):
    for i in range(0,x):
        print(x, '*', i+1, '=', x*(i+1), end='')
        print('\t',end='')
    print()

运行结果:

1 * 1 = 1   
2 * 1 = 2   2 * 2 = 4   
3 * 1 = 3   3 * 2 = 6   3 * 3 = 9   
4 * 1 = 4   4 * 2 = 8   4 * 3 = 12  4 * 4 = 16  
5 * 1 = 5   5 * 2 = 10  5 * 3 = 15  5 * 4 = 20  5 * 5 = 25  
6 * 1 = 6   6 * 2 = 12  6 * 3 = 18  6 * 4 = 24  6 * 5 = 30  6 * 6 = 36  
7 * 1 = 7   7 * 2 = 14  7 * 3 = 21  7 * 4 = 28  7 * 5 = 35  7 * 6 = 42  7 * 7 = 49  
8 * 1 = 8   8 * 2 = 16  8 * 3 = 24  8 * 4 = 32  8 * 5 = 40  8 * 6 = 48  8 * 7 = 56  8 * 8 = 64  
9 * 1 = 9   9 * 2 = 18  9 * 3 = 27  9 * 4 = 36  9 * 5 = 45  9 * 6 = 54  9 * 7 = 63  9 * 8 = 72  9 * 9 = 81  
  1. 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
n = input('请输入一个正整数:')
for i in range(0,len(n)):
    if i<len(n)/2+1 and n[i]!=n[-1-i]:
        break
if i>len(n)/2:
    print(n+'是回文数')
else:
    print(n+'不是回文数')

运行结果:

请输入一个正整数:12322
12322不是回文数
请输入一个正整数:24642
24642是回文数
  1. 打印图形(菱形)
    n = 4
                @
            @@@
        @@@@@
    @@@@@@@
       @@@@@
          @@@
             @
n=int(input('请输入层数:'))
for x in range(1,n+1):
    print(' '*(n-(2*x-1)//2-1) + '@'*(2*x-1))
for i in range(1,n):
    print(' '*i + '@'*(2*(n-i)-1))

运行结果:

请输入层数:5
    @
   @@@
  @@@@@
 @@@@@@@
@@@@@@@@@
 @@@@@@@
  @@@@@
   @@@
    @
  1. 输⼊入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
string = input('请输入一个字符串:')
apha = 0
space = 0
digit = 0
elst = 0
for i in string:
    if i.isalpha():
        apha += 1
    elif i.isspace():
        space += 1
    elif i.isdigit():
        digit += 1
    else:
        elst += 1
print('此字符串长度为:%d, 英文字母有:%d个, 空格有%d个, 数字有%d个,'\
      ' 其他字符有%d个'%(len(string), apha, space, digit, elst))

运行结果:

请输入一个字符串:a B c D 465 #%$ 54  5435 AWDT#%#$%^FSDG45y
此字符串长度为:42, 英文字母有:13个, 空格有9个, 数字有11个, 其他字符有9个

列表作业

  1. 已知一个列表,求列表中心元素。
li = ['aaa', 'bbb', 3, '4', 'fasd', 7, 8, 'gfsgf',2]
print('已知列表:',li)
if len(li)%2 == 0:
    print('该列表的中心元素是:', li[len(li)//2-1],'和',li[len(li)//2])
else:
    print('该列表的中心元素是:', li[len(li) // 2])

运行结果:

已知列表: ['aaa', 'bbb', 3, '4', 'fasd', 7, 8, 'gfsgf', 2]
该列表的中心元素是: fasd
  1. 已知一个列表,求所有元素和。
li = [3,4,5,5,5.3,3.4,2,12,6.7,5.7]
count = 0
for i in li:
    count+=i
print('列表:',li,'\n所有元素的和为:%.2f'%(count))

运行结果:

列表: [3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7] 
所有元素的和为:52.10
  1. 已知⼀一个列列表,输出所有奇数下标元素。
li = [3,4,5,5,5.3,3.4,2,12,6.7,5.7]
print('列表:',li,'\n奇数下标的元素为:',end='')
for i in range(0,len(li)):
    if i%2==0:
        print(li[i],end=' ')

运行结果:

列表: [3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7] 
奇数下标的元素为:3 5 5.3 2 6.7 
  1. 已知一个列表,输出所有元素中,值为奇数的。
li = [3,4,5,5,5,3,2,12,6,5]
print('列表:',li,'\n奇数元素为:',end='')
for i in li:
    if i%2!=0:
        print(i,end=' ')

运行结果:

列表: [3, 4, 5, 5, 5, 3, 2, 12, 6, 5] 
奇数元素为:3 5 5 5 3 5
  1. 已知一个列表,将所有元素乘二。
li = [3,4,5,5,5.3,3.4,2,12,6.7,5.7]
print('列表:',li)
for i in range(0,len(li)):
    li[i]*=2
print('该列表的元素乘2后:',li)

运行结果:

列表: [3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7]
该列表的元素乘2后: [6, 8, 10, 10, 10.6, 6.8, 4, 24, 13.4, 11.4]
  1. 已知一个列表,将所有元素加到第一个元素中。
li = [3,4,5,5,5.3,3.4,2,12,6.7,5.7]
print('列表:',li)
li[0] = [li[0]]
for i in range(1,len(li)):
    li[0].append(li[i])
print('该列表的元素加到第一个元素中后:',li)

运行结果:

列表: [3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7]
该列表的元素加到第一个元素中后: [[3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7], 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7]

  1. 已知一个列表A,将奇数位置元素存到B列表中,偶数元素存到C列表中。
A = [3,4,5,5,5.3,3.4,2,12,6.7,5.7]
B = []
C = []
for i in range(0,len(A)):
    if i%2 == 0:
        B.append(A[i])
    else:
        C.append(A[i])
print('列表A:',A,'\n列表B:',B,'\n列表C:',C)

运行结果:

列表A: [3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7] 
列表B: [3, 5, 5.3, 2, 6.7] 
列表C: [4, 5, 3.4, 12, 5.7]
  1. 把A列表的前5个元素复制到B列表中。
A = [3,4,5,5,5.3,3.4,2,12,6.7,5.7]
B = ['aaa', 'bbb', 3, '4', 'fasd', 7, 8, 'gfsgf',2]
print('列表A:',A,'\n列表B:',B)
for i in range(0,5):
    B.append(A[i])
print('添加A中前五个元素后列表B:',B)

运行结果:

列表A: [3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7] 
列表B: ['aaa', 'bbb', 3, '4', 'fasd', 7, 8, 'gfsgf', 2]
添加A中前五个元素后列表B: ['aaa', 'bbb', 3, '4', 'fasd', 7, 8, 'gfsgf', 2, 3, 4, 5, 5, 5.3]
  1. 把1----36分别放入列表中,计算列表数组对角元素之和。6 * 6的列表
li = [[1,2,3,4,5,6],
      [7,8,9,10,11,12],
      [13,14,15,16,17,18],
      [19,20,21,22,23,24],
      [25,26,27,28,29,30],
      [31,32,33,34,35,36]]
print('对角元素之和为:%d'%(li[0][0]+li[0][5]+li[5][0]+li[5][5]))

运行结果:

对角元素之和为:74
  1. 有一个长度是10的列表,列表内有10个不重复的数字,要求按从大到小排序。
A = [3,4,5,5.3,3.4,2,12,6.7,5.7]
print('排序前:',A)
for i in range(0,len(A)):
    for j in range(i+1,len(A)):
        if A[i]<A[j]:
            temp = A[i]
            A[i] = A[j]
            A[j] = temp
print('排序后:',A)

运行结果:

排序前: [3, 4, 5, 5.3, 3.4, 2, 12, 6.7, 5.7]
排序后: [12, 6.7, 5.7, 5.3, 5, 4, 3.4, 3, 2]
  1. 有一个长度是10的列表,要求删除某一个位置的元素
A = [3,4,5,5.3,3.4,2,12,6.7,5.7,6]
print('列表A:',A)
i = int(input('请输入要删除的位置序号:'))
A.pop(i-1)
print('删除后的列表A:',A)

运行结果:

列表A: [3, 4, 5, 5.3, 3.4, 2, 12, 6.7, 5.7, 6]
请输入要删除的位置序号:5
删除后的列表A: [3, 4, 5, 5.3, 2, 12, 6.7, 5.7, 6]
  1. 有一个长度是10的列表,按递增排列,用户输入一个数,插入适当位置。
A = [2, 3, 3.4, 4, 5, 5.3, 5.7, 6.7, 12]
print('列表A:',A)
num = int(input('请输入要插入的数:'))
for i in range(0,len(A)):
    if num<A[i]:
        A.insert(i,num)
        break
print('插入该元素后的A列表:',A)

运行结果:

列表A: [2, 3, 3.4, 4, 5, 5.3, 5.7, 6.7, 12]
请输入要插入的数:6
插入该元素后的A列表: [2, 3, 3.4, 4, 5, 5.3, 5.7, 6, 6.7, 12]
  1. 有一个长度是10的列表,数组内有10个人名,要求去掉重复的
names = ['张三', '李四', '张三', '张三', '王五', '赵六', '张三', '小翟总', '李四']
print('去重前的名字列表:',names)
i = 0
while i<len(names):
    j=i+1
    while j<len(names):
        if names[j] == names[i]:
            del names[j]
            j-=1
        j+=1
    i+=1
print('去重后的名字列表:',names)

运行结果:

去重前的名字列表: ['张三', '李四', '张三', '张三', '王五', '赵六', '张三', '小翟总', '李四']
去重后的名字列表: ['张三', '李四', '王五', '赵六', '小翟总']
  1. 把A列表的第三到第六位之间的元素删除。
A = [2, 3, 3.4, 4, 5, 5.3, 5.7, 6.7, 12]
print('删除前的列表A:',A)
for i in range(0,6-3):
    del A[3-1]
print('删除3至6为后的列表A:',A)

运行结果:

删除前的列表A: [2, 3, 3.4, 4, 5, 5.3, 5.7, 6.7, 12]
删除3至6为后的列表A: [2, 3, 5.3, 5.7, 6.7, 12]
  1. 已知A列表,B列表,定义一个列表C,要求C包含A,B数组中的数据(无重复值)。
A = [3,4,5,5,5.3,3.4,2,12,6.7,5.7]
B = ['aaa', 'bbb', 3, '4', 'fasd', 7, 8, 'gfsgf',2]
C = A+B
i = 0
while i<len(C):
    j=i+1
    while j<len(C):
        if C[j] == C[i]:
            del C[j]
            j-=1
        j+=1
    i+=1
print('列表A:',A,'\n列表B:',B,'\n列表C:',C)

运行结果:

列表A: [3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7] 
列表B: ['aaa', 'bbb', 3, '4', 'fasd', 7, 8, 'gfsgf', 2] 
列表C: [3, 4, 5, 5.3, 3.4, 2, 12, 6.7, 5.7, 'aaa', 'bbb', '4', 'fasd', 7, 8, 'gfsgf']

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • 一、输入函数 1、输出函数 : print() 1、默认每一个print函数,输出完内容后输出一个换行2、一个pr...
    七夜_174e阅读 2,137评论 0 6
  • 一、输入输出函数 1.输出函数print()1.默认每一个print函数,输出完内容后会输出一个换行2.一个pri...
    liuperson阅读 374评论 0 5
  • 一、input与print函数 1.输出函数:print()函数 默认每一个print函数,输出完内容后会输出一个...
    旧时初_2e8d阅读 293评论 0 6
  • 前言:Kubernetes 是Google开源的容器集群管理系统,它构建于docker技术之上,基于Docker构...
    撸大师阅读 5,789评论 2 11
  • 三月天的雪很凉,母亲叮嘱我多穿点衣服,那是我总是觉得母亲很烦,总是随口应了一声,现在,母亲你什么时候能再说一次 。...
    邻家婕婕阅读 249评论 1 1