python list常用技巧

目录

一、python同时遍历两个list用法

二、list快速去重

以下的几种情况结果是一样的,去重之后顺序会改变:

三、统计list或array中所包含的元素

四、python打印列表中某元素的所有位置

五、list转字符串

六、字符串转list

七、在list指定位置插入元素

八、初始化一个3*5的全零矩阵:

九、统计列表的相同元素的次数, 词频统计 


一、python同时遍历两个list用法

需求是将两个list同时进行遍历,然后同步的将每个元素add到一个dict中,虽然有麻烦的方式,比如直接用list的数组下标可以实现,但是一点也不pythonic,于是想到了zip内置函数。记录下写法~

废话不多说直接上代码:

	dict_1 = {}
    list_1 = ['a','b','c']
    list_2 = ['1','2','3']
    """ zip打包用法,同时遍历两个list """
    for symbol,digit in zip(list_1,list_2):
        dict_1[symbol] = digit 

最终就是同步的将list1 、2进行遍历,同步的放入到dict中。
结果如下:

dict_1 = {'a':'1','b':'2','c':'3'}

二、list快速去重

参考:python中对list去重的多种方法 - xushukui - 博客园 (cnblogs.com)

以下的几种情况结果是一样的,去重之后顺序会改变:

ids = [1,2,3,3,4,2,3,4,5,6,1]
# ids = [[1], [2,3], [2,3], [2], [2]]
news_ids = []
for id in ids:
    if id not in news_ids:
        news_ids.append(id)
print(news_ids)

或用set

ids = [1,4,3,3,4,2,3,4,5,6,1]
ids = list(set(ids))

或使用itertools.grouby

import itertools
ids = [1,4,3,3,4,2,3,4,5,6,1]
ids.sort()
it = itertools.groupby(ids)
for k, g in it:
    print k

三、统计list或array中所包含的元素

a = np.array([1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6,6])
np.unique(a)

输出:
array([1, 2, 3, 4, 5, 6])

四、python打印列表中某元素的所有位置

#打印name列表中元素2的所有位置
name = ['!', '#', '*', 'Eric', 'alex', 'jack', 'jack', 'a', 'b', 'c', 'd', 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 2]

location = 0
find = 2
for i in range(name.count(2)):
  location += name[location:].index(find)
  print (location)
  location += 1
  

五、list转字符串

>>> list1=['ak','uk',4]
>>> list2=[str(i) for i in list1] #使用列表推导式把列表中的单个元素全部转化为str类型
>>> list2 #查看转化后的列表
['ak', 'uk', '4']
>>> list3=' '.join(list2) #把列表中的元素放在空串中,元素间用空格隔开
>>> list3 #查看生成的长串
'ak uk 4'

六、字符串转list

str1 = "12345"
list1 = list(str1)
print list1
str2 = "123 sjhid dhi"
list2 = str2.split() #or list2 = str2.split(" ")
print list2
str3 = "www.google.com"
list3 = str3.split(".")
print list3

['1', '2', '3', '4', '5']
['123', 'sjhid', 'dhi']
['www', 'google', 'com']

参考:https://www.jb51.net/article/149359.htm

七、在list指定位置插入元素

>>> a=['贫弱!','無駄!','WRYYYY!']
>>> a[0:0]='欧拉!' #直接插入会导致字符拆分
>>> a
['欧', '拉', '!', '贫弱!', '無駄!', 'WRYYYY!'] 
>>> a[0:3]=["欧拉!"] #只要把字符串包在列表里即可
>>> a
['欧拉!', '贫弱!', '無駄!', 'WRYYYY!']
>>> a.insert(0,"HIGH!") #其实用insert也行
>>> a
['HIGH!', '欧拉!', '贫弱!', '無駄!', 'WRYYYY!']

八、初始化一个3*5的全零矩阵:

multilist = [[0 for col in range(5)] for row in range(3)]

或: 

M=3
N=5
dp = [[0] * (N) for _ in range(M)]

九、统计列表的相同元素的次数, 词频统计 

# 方法一
def list_count(num_list):
    return {x: num_list.count(x) for x in set(num_list)}
方法二:
from collections import Counter
values = ['zhangsan','lisi','lisi','wangwu','wangwu','lisi','zhangsan','zhangsan','zhangsan','zhangsan','mazi','mazi','wangwu','wangwu','mazi', 'lisi','mazi','mazi','mazi', 'wangwu','mazi',]
values_counts = Counter(values)
top_2 = values_counts.most_common(2)
print(top_2)

十、list按照第二个元素排序

listN = [[1,6], [1,7], [3,25], [3,8], [4,25], [2,5], [3,8]]
listN.sort(key=takeSecond, reverse=True)
print(listN)

[[3, 25], [4, 25], [3, 8], [3, 8], [1, 7], [1, 6], [2, 5]]

十一、list比较大小

比较原理:

        从第一个元素顺序开始比较,如果相等,则继续,返回第一个不想等元素比较的结果。

        如果所有元素比较均相等,则长的列表大,一样长则两列表相等

示例:

a = [1,2,3]
b = [1,3,5]
c = [1,2,3,-1]
print(a < b, a < c, b < c)
print(a > b, a > c, b > c)

True True False
False False True

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值