python(day013——列表1)

 

序列:字符串、元组、列表。可以使用切片、顺序存储、使用坐标。

1.列表

>>> a=list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[5:8]
[5, 6, 7]
>>>
>>>
>>>
>>> a[1::2]
[1, 3, 5, 7, 9]
>>> a[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a[::-2]
[9, 7, 5, 3, 1]
>>> a[8::-2]
[8, 6, 4, 2, 0]
>>> a[-1:-4:-2]
[9, 7]

#切片可以越界,坐标不可以
>>> a[90:100]
[]

练习:将奇数坐标值累加

a=[1,3,5,6,3,2,4,5,2,2,5,8,4,2,1,4,8,9]
print(a[1::2])
print(sum(a[1::2]))

#方法二
result=0
for i in range(1,len(a),2):
    print(i)
    result+=a[i]

print(result)

*list删除

>>> a=[1,2,3,4,5,6,7,8,9]
>>> a.remove(1)  #根据内容删除
>>> a
[2, 3, 4, 5, 6, 7, 8, 9]
>>> del a[1:4]  #根据位置删除,可以用切片
>>> a
[2, 6, 7, 8, 9]

练习:生成一个新的list,只保留每个单词的首尾字母。

word_list=["hello","world","good","morning"]
new_word_list=[]
for i in word_list:
    #new_word_list.append(i[0]+i[-1])
    new_word_list.append(i[0::len(i)-1])

print(new_word_list)
>>> word_list=["hello","world","good","morning"]
>>> "".join(word_list)
'helloworldgoodmorning'
>>> a=list(range(0,10))
>>> "".join(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, int found
>>> "".join(map(str,a))
'0123456789'

*列表运算

>>> a
[1, 2, 3, 4]
>>> b=a+[2,3]
>>> b
[1, 2, 3, 4, 2, 3]
>>> c=a*4
>>> c
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
>>> 5 in a
False
>>> 4 in a
True

>>> max(c)
4
>>> min(c)
1

练习:三个数,找最大的

l=[1,2,3]
a,b,c=l[0],l[1],l[2]
max=l[0]

if a>b:
    max=a
else:
    max=b

if max<c:
    max=c
l.remove(max)
if l[0]>l[1]:
    second=l[0]
    last=l[1]
else:
    second=l[1]
    last=l[0]

print(max,second,last)

#方法2:
l=[1,2,3]
a,b,c=l[0],l[1],l[2]
if a>b and a>c:
    if b>c:
        print(a,b,c)
    else:
        print(a,c,b)
elif a>b and a<c:
    print(c,a,b)
elif a<b and a<c:
    if b<c:
        print(c,b,a)
    else:
        print(b,c,a)
else:
    print(b,a,c)

*操作符函数operator

*列表操作函数

>>> a
['1', '2', '3']
>>> a.append(1)
>>> a
['1', '2', '3', 1]
>>> a.insert(2,100)
>>> a
['1', '2', 100, '3', 1]
>>> b=["a","b"]
>>> a.append(b)
>>> a
['1', '2', 100, '3', 1, ['a', 'b']]
>>> a.extend(b)
>>> a
['1', '2', 100, '3', 1, ['a', 'b'], 'a', 'b']
>>> a.reverse()  #原地反转,不具备排序功能
>>> a
['b', 'a', ['a', 'b'], 1, '3', 100, '2', '1']
>>> a.pop()
'1'
>>> a
['b', 'a', ['a', 'b'], 1, '3', 100, '2']
>>> a.index(1)
3
>>> a=[1,1,2,3,3,3]
>>> a.count(1)
2
>>> a=[1,5,6,8,2,3]
>>> a.sort()  #原地排序,返回None
>>> a
[1, 2, 3, 5, 6, 8]
>>> a=[1,5,6,8,2,3]
>>> sorted(a)  #返回排序后序列
[1, 2, 3, 5, 6, 8]
>>> a
[1, 5, 6, 8, 2, 3]

练习:写一个count函数,统计某个值在列表中出现的次数并返回

def count(l,element):
    """练习:写一个count函数,统计某个值在列表中出现的次数并返回"""
    if not isinstance(l,(str,list,tuple,dict)):
        return 0
    result=0
    for i in l:
        if i==element:
            result+=1
    return result

a=[1,2,3,4,5,6,6,6]

print(count(a,6))

*sort函数

>>> help(list.sort)
Help on method_descriptor:

sort(self, /, *, key=None, reverse=False)
    Stable sort *IN PLACE*.

#对原序列进行排序,也就是直接在原序列上操作,没有返回值
#key:也是一个函数,默认值为None
#reverse:表示是否逆序,默认为False。如设置True,表示逆序
def func(n):
    return n%10
a=[100,33,85,75,91,52]
a.sort(key=func)  #按照个位数字进行排序
print(a)

#结果:
[100, 91, 52, 33, 85, 75]

#按照序列的长度倒序排序
list1 = [(1,5,3),(1,3,6,3),(1,1,2,4,5,6),(1,9)]
def L(tup) :
	return len(tup)
list1.sort(key = L,reverse = True)
print (list1)


#用最后一个元素比较大小,倒排
list1 = [(1,5,3),(1,3,6,3),(1,1,2,4,5,6),(1,9)]
def L(tup) :
	return tup[-1]
list1.sort(key = L,reverse = True)
print (list1)

练习:按照单词的长度排序

a=["teachers","hello","windows","i"]
def lens(n):
    return len(n)
a.sort(key=lens)
print(a)

#结果:
#['i', 'hello', 'windows', 'teachers']

练习:按照小写字母顺序排序

a=["teachers","B","am","hello","Windows","i"]
a.sort(key=lambda x:x.lower())
print(a)

#结果:
#['am', 'B', 'hello', 'i', 'teachers', 'Windows']

*列表复制:

  1. 引用复制:内存地址相同,导致修改任何一个list,另一个list也会随之改变  #list1=list2
  2. 非引用复制: 非引用list,它们的内存地址不一样,所以修改任何一个list都不会影响另一个list。 #list1=list2[:]

*推导列表

>>> [i*10+n for i in range(1,10)  for n in range(0,10)]
[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, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
 98, 99]

#二维矩阵的转置
>>> a=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
>>> print ([ [j[i] for j in a] for i in range(3)])
[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值