标签: sublist

在列表中查找子列表的开始和结束索引

我有一个清单:

greeting = ['hello','my','name','is','bob','how','are','you']
Run Code Online (Sandbox Code Playgroud)

我想定义一个函数,它将在此列表中找到子列表的第一个和最后一个索引.从而:

find_sub_list(['my','name','is'], greeting)
Run Code Online (Sandbox Code Playgroud)

应该返回:

1, 3
Run Code Online (Sandbox Code Playgroud)

建议?

python search list sublist

10
推荐指数
1
解决办法
7287
查看次数

Python在开始和结束关键字模式中将列表拆分为子列表

如果我有一个清单,请说:

lst = ['foo', 'bar', '!test', 'hello', 'world!', 'word']
Run Code Online (Sandbox Code Playgroud)

如果有一个字符!,我将如何返回给出的列表:

lst = ['foo', 'bar', ['test', 'hello', 'world'], 'word']
Run Code Online (Sandbox Code Playgroud)

我很难找到解决方案.这是我尝试过的一种方法:

def define(lst):
    for index, item in enumerate(lst):
        if item[0] == '!' and lst[index+2][-1] == '!':
            temp = lst[index:index+3]
            del lst[index+1:index+2]
            lst[index] = temp
    return lst
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

python split list sublist

10
推荐指数
1
解决办法
677
查看次数

列出retainAll异常

我想测试如何获得两个列表之间的交集,这是我的代码:

            List<Integer> list = Arrays.asList(16, 17, 18, 19, 20);
        List<Integer> list2 = list.subList(2, 5);

        System.out.println(list.subList(2, 5));
        System.out.println(list.containsAll(list.subList(2, 5)));
        System.out.println(list.retainAll(list2));
Run Code Online (Sandbox Code Playgroud)

这会产生:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.remove(Unknown Source)
    at java.util.AbstractList$Itr.remove(Unknown Source)
    at java.util.AbstractCollection.retainAll(Unknown Source)
    at gov.noaa.nhc.App.main(App.java:48)
Run Code Online (Sandbox Code Playgroud)

但我没有做任何删除.为什么这会产生例外?

更新I:

使用:

List<Integer> list = new ArrayList<Integer>(Arrays.asList(16, 17, 18, 19, 20));
List<Integer> list2 = list.subList(2, 5);
Run Code Online (Sandbox Code Playgroud)

产品:

java.util.ConcurrentModificationException
Run Code Online (Sandbox Code Playgroud)

由于list2由list1支持,因此从list1中删除项将导致此异常.最后工作版:

List<Integer> list = new ArrayList<Integer>(Arrays.asList(16, 17, 18, 19, 20));
List<Integer> list2 = Arrays.asList(18, 19, 20);
Run Code Online (Sandbox Code Playgroud)

要么

List<Integer> list = new ArrayList<Integer>(Arrays.asList(16, 17, 18, 19, …
Run Code Online (Sandbox Code Playgroud)

java exception list sublist

9
推荐指数
1
解决办法
7047
查看次数

如何反转列表中的子列表?

我应该创建一个函数,该输入是一个列表和两个数字,该函数反转子列表,其位置由两个数字表示.例如,这是它应该做的:

>>> lst = [1, 2, 3, 4, 5] 
>>> reverse_sublist (lst,0,4) 
>>> lst  [4, 3, 2, 1, 5]
Run Code Online (Sandbox Code Playgroud)

我创建了一个函数并且它可以工作,但我不确定它是否已经到位.这是我的代码:

def reverse_sublist(lst,start,end):
    sublist=lst[start:end]
    sublist.reverse()
    lst[start:end]=sublist
    print(lst)
Run Code Online (Sandbox Code Playgroud)

python function list sublist

9
推荐指数
2
解决办法
8598
查看次数

如何将字符串处理为子列表层

这是示例表单,稍后我将尝试用文字解释.我有一个打破字符串的列表......

[a, a, a, b, a, a, b, a, c, a, b, a, a, c, a, c, a]
Run Code Online (Sandbox Code Playgroud)

其中b是标准1,c是标准2

我想把它分成这样的列表:

[a, a, a, [b, a, a, [b, a, c], a, [b, a, a, c], a, c], a]
Run Code Online (Sandbox Code Playgroud)

所以我想处理字符串,这样当我浏览它时,如果项目符合条件1,则打开一个新列表,如果项目符合条件2,则关闭列表并返回上面的一个级别.

我试过做这样的事情,但效果并不好.

def sublist(self, l):
  for line in list:
    if not b:
    self.data.append(line)
  else:
    sublist(l[line:])       #<-----  not sure how to recurse it.
Run Code Online (Sandbox Code Playgroud)

我在stackoverflow之前看到了将列表分成相同大小的列表,但没有一个使用一组条件进入子列表.

我对python很新,所以我不太熟悉数据结构和迭代器工具.

python recursion list sublist

8
推荐指数
1
解决办法
436
查看次数

列表中的子列表

创建了一个列表 flowers

>>> flowers = ['rose','bougainvillea','yucca','marigold','daylilly','lilly of the valley']
Run Code Online (Sandbox Code Playgroud)

然后,

我必须分配列表thorny的子列表,该列表包含列表flowers中的前三个对象.

这是我试过的:

>>> thorny = []
>>> thorny = flowers[1-3]
>>> thorny
'daylilly'
>>> thorny = flowers[0-2]
>>> thorny
'daylilly'
>>> flowers[0,1,2]
Traceback (most recent call last):
  File "<pyshell#76>", line 1, in <module>
    flowers[0,1,2]
TypeError: list indices must be integers, not tuple
>>> thorny = [flowers[0] + ' ,' + flowers[1] + ' ,' + flowers[2]]
>>> thorny
['rose ,bougainvillea ,yucca']
Run Code Online (Sandbox Code Playgroud)

如何保持列表花的前3个对象,同时保持列表中列表的外观?

python list sublist

8
推荐指数
3
解决办法
5万
查看次数

从Python中的列表中提取随机子列表

我有一个python字典如下:

{'APPLE_PROVIDERS' : ["some", "provider","can","be", "null"],
  ....
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是从密钥的列表(这是一个值)中获取一个随机子列表.不仅仅是一个元素,而是一个完全随机的子列表.这是我尝试过的:

a_list = a_dict.get('APPLE_PROVIDERS', "")
for item in a_list[randrange(0,len(a_list)) : randrange(0,len(a_list))]:
  ...do something.. 
Run Code Online (Sandbox Code Playgroud)

这件事有两个问题:

  1. 如果列表为空,或者dict查找失败,程序将失败,因为randrange有(0,0)作为参数,这会导致错误

  2. 很多时候,两个randrange()调用都会生成相同的数字,尤其是当列表很小时.这将返回一个空列表.例如a_list [5:5]

那么,处理上述案例的随机子列表的最佳方法是什么?另外,我不关心订购.一切正常.每次for循环开始时,我只想要一个完全随机的子列表0,1 ...直到len(a_list)元素.

如果列表可以在其他一些可以容纳类似元素的数据结构中进行更改,那么这对我也有用.

python random sublist

8
推荐指数
2
解决办法
8874
查看次数

从有序列表生成随机子列表以维护排序

考虑一个问题,其中必须从X中选择k个项目的随机子列表Y,n个项目的列表,其中Y中的项目必须以与它们在X中相同的顺序出现.Y中的所选项目不必是不同.一个解决方案是:

for i = 1 to k
    A[i] = floor(rand * n) + 1
    Y[i] = X[A[i]]
sort Y according to the ordering of A
Run Code Online (Sandbox Code Playgroud)

但是,由于排序操作,它具有运行时间O(k log k).要删除它,它很诱人

high_index = n
for i = 1 to k
    index = floor(rand * high_index) + 1
    Y[k - i + 1] = X[index]
    high_index = index
Run Code Online (Sandbox Code Playgroud)

但由于统一的索引选择,这给返回列表提供了明显的偏差.如果第二溶液中的指数非均匀分布,则感觉可以获得O(k)溶液.有没有人知道是否是这种情况,如果是这样,边际指数的分布具有哪些属性?

algorithm sublist

7
推荐指数
1
解决办法
1218
查看次数

确定列表中的所有元素是否存在,并且在另一个列表中是否存在相同的顺序

如何创建一个带有sublist()两个列表的函数,list1并且list2,True如果list1是子列表,则返回if list2,False否则.list1是一个子列表,list2如果数字list1出现list2的顺序与它们出现的顺序相同list1,但不一定是连续的.例如,

>>> sublist([1, 12, 3],[25, 1, 30, 12, 3, 40])
True

>>> sublist([5, 90, 2],[90, 20, 5, 2, 17])
False
Run Code Online (Sandbox Code Playgroud)

python list sublist

7
推荐指数
3
解决办法
2205
查看次数

Python:包含字符串子列表的列表

我有一个字符串列表s如下:

s = ['Hello', 'world', '!', 'How', 'are', 'you', '?', 'Have', 'a', 'good', 'day', '.']
Run Code Online (Sandbox Code Playgroud)

我希望将此列表拆分为子列表.每当有?!.\n一个新的子列表形成如下:

final = [['Hello', 'world', '!'],
         ['How', 'are', 'you', '?'],
         ['Have', 'a', 'good', 'day', '.']]
Run Code Online (Sandbox Code Playgroud)

我试过这个:

x = 0
for i in range(len(s)):
    if s[i] in ('!','?','.','\n'):
         final = s[x: x+i]
    x = i+1
Run Code Online (Sandbox Code Playgroud)

最终存储我的输出.没有得到应有的方式.有什么建议?

python list sublist

7
推荐指数
1
解决办法
933
查看次数

标签 统计

sublist ×10

list ×8

python ×8

algorithm ×1

exception ×1

function ×1

java ×1

random ×1

recursion ×1

search ×1

split ×1