鱼C论坛

 找回密码
 立即注册
查看: 2582|回复: 30

列表元素取出求助

[复制链接]
发表于 2022-5-17 18:18:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
sn = [['1230','1'],['1230','2'],['1230','3'],['1230','4'],['2345','1'],['2345','2'],['2345','3'],['1111','1'],['1111','2'],['1111'','3'],['1111','4'],['1111','5'],['2222','1'],['2222','2'],['2222','3'],['6547','1'],['6547','2'],['6547','3'],['9852','1'],['9852','2']]

以上列表,如我想复制列表里[['xxxx','1']['xxxx','2']]每个相同的前4位的‘1’,‘2’,需要如何实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-5-17 18:19:43 | 显示全部楼层
假设列表的数是无限多,需要如何实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-17 18:26:50 | 显示全部楼层
访问列表会吧,字符串本身也是一个可迭代对象,你就取出对应字符串之后访问该字符串对应位置的元素
最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-17 18:36:31 From FishC Mobile | 显示全部楼层
豆嘉木 发表于 2022-5-17 18:26
访问列表会吧,字符串本身也是一个可迭代对象,你就取出对应字符串之后访问该字符串对应位置的元素
{:10_2 ...

要是列表元素是无限个的呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-17 18:39:15 | 显示全部楼层
2228294101 发表于 2022-5-17 18:36
要是列表元素是无限个的呢

列表元素不可能是无限个,内存放不下,你的意思应该是元素很多,你就用循环遍历列表,每一个字符串都用我的方法比较,只有这种方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-17 18:40:04 | 显示全部楼层

列表里[['xxxx','1']['xxxx','2']]每个相同的前4位的‘1’,‘2’


有点没理解这句话,另外列表未知个数,可以直接 for 循环,列表有多长,for 循环就迭代多长
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-17 18:40:43 | 显示全部楼层
2228294101 发表于 2022-5-17 18:36
要是列表元素是无限个的呢

一般情况下,列表元素都是通过用户输入存放进去的,既然你要筛选,在放进去之前就分好类,这样就不用遍历了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-17 18:46:10 | 显示全部楼层
本帖最后由 jackz007 于 2022-5-17 18:51 编辑
sn = [['1230','1'],['1230','2'],['1230','3'],['1230','4'],['2345','1'],['2345','2'],['2345','3'],['1111','1'],['1111','2'],['1111','3'],['1111','4'],['1111','5'],['2222','1'],['2222','2'],['2222','3'],['6547','1'],['6547','2'],['6547','3'],['9852','1'],['9852','2']]
tn = []
for x in sn:
    if len(x[0]) == 4 and (x[1] == '1' or x[1] == '2'):
        for k in range(1 , 4):
            if x[0][k] != x[0][0]:
                break
        else:
            tn . append(x)
print(tn)
        运行实况:
D:\[00.Exercise]\[Python]>python x.py
[['1111', '1'], ['1111', '2'], ['2222', '1'], ['2222', '2']]

D:\[00.Exercise]\[Python]>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-17 18:49:52 From FishC Mobile | 显示全部楼层
豆嘉木 发表于 2022-5-17 18:40
一般情况下,列表元素都是通过用户输入存放进去的,既然你要筛选,在放进去之前就分好类,这样就不用遍历 ...

工作性质 ,并不是手动输入,数据上传服务器,我要从服务器上下下来做分析,这个实际上是很多数据,然后有同一个series number,可能会有7-8个数据,然后我只要5个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-17 18:53:23 | 显示全部楼层
2228294101 发表于 2022-5-17 18:49
工作性质 ,并不是手动输入,数据上传服务器,我要从服务器上下下来做分析,这个实际上是很多数据,然后 ...

哦哦,那就遍历列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-17 18:53:59 From FishC Mobile | 显示全部楼层
Twilight6 发表于 2022-5-17 18:40
有点没理解这句话,另外列表未知个数,可以直接 for 循环,列表有多长,for 循环就迭代多长

,xxxx就是前面相同,1,2代表的就是后面不同,我也是用的for,但是不知道怎么只取两个前面元素相同的数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-17 18:56:46 | 显示全部楼层
2228294101 发表于 2022-5-17 18:53
,xxxx就是前面相同,1,2代表的就是后面不同,我也是用的for,但是不知道怎么只取两个前面元素相同的数据


是这个意思吗?参考代码:
sn = [['1230','1'],['1230','2'],['1230','3'],['1230','4'],
      ['2345','1'],['2345','2'],['2345','3'],['1111','1'],
      ['1111','2'],['1111','3'],['1111','4'],['1111','5'],
      ['2222','1'],['2222','2'],['2222','3'],['6547','1'],
      ['6547','2'],['6547','3'],['9852','1'],['9852','2']]

tn = set()
for x in sn:
    if len(x[0]) == 4 and (x[1] == '1' or x[1] == '2'):
        if len(set(x[0])) == 1:
            tn.add(x[0])
print(tn)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-17 18:57:02 From FishC Mobile | 显示全部楼层
豆嘉木 发表于 2022-5-17 18:53
哦哦,那就遍历列表

遍历知道是遍历,但是就是不知道怎么每个相同的i[0],怎么只取两个数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-17 18:59:44 From FishC Mobile | 显示全部楼层
Twilight6 发表于 2022-5-17 18:56
是这个意思吗?参考代码:

差不多这个意思,但不完全是
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-17 19:02:42 | 显示全部楼层
2228294101 发表于 2022-5-17 18:59
差不多这个意思,但不完全是



好吧  理解不了你的需求,无能为力了

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-17 19:03:14 | 显示全部楼层
2228294101 发表于 2022-5-17 18:57
遍历知道是遍历,但是就是不知道怎么每个相同的i[0],怎么只取两个数据


原先列表array1,中间变量temp,把要的部分放到temp再存入array2,怎么取出元素,比如array1=[['123','1'],['132','2']],你要访问12,就temp=array1[0][0][0]+array1[0][0][1],array2[i]=temp
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-17 19:04:26 From FishC Mobile | 显示全部楼层
Twilight6 发表于 2022-5-17 19:02
好吧  理解不了你的需求,无能为力了

晚点我把我的代码放上来,现在在外面,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-17 19:05:03 | 显示全部楼层
2228294101 发表于 2022-5-17 19:04
晚点我把我的代码放上来,现在在外面,谢谢!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-17 20:18:23 | 显示全部楼层
豆嘉木 发表于 2022-5-17 18:26
访问列表会吧,字符串本身也是一个可迭代对象,你就取出对应字符串之后访问该字符串对应位置的元素
{:10_2 ...

秒了秒了,如果列表本来不具备这样的操作就很难通过迭代生成以需要生成的对应的元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-17 20:52:15 | 显示全部楼层

sn = [['1230','1'],['1230','2'],['1230','3'],['2345','1'],['2345','2'],['2345','3']]
unit = []
unit2=[]
for i in sn:
    while i[0] not in unit:
        unit.append(i[0])     
        break

for x in unit:
    for y in sn:
        while x == y[0] :
            unit2.append(y)  
            if               :
                break


print(unit2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 17:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表