我有一个清单:
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)
建议?
如果我有一个清单,请说:
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)
任何帮助将不胜感激.
我想测试如何获得两个列表之间的交集,这是我的代码:
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) 我应该创建一个函数,该输入是一个列表和两个数字,该函数反转子列表,其位置由两个数字表示.例如,这是它应该做的:
>>> 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) 这是示例表单,稍后我将尝试用文字解释.我有一个打破字符串的列表......
说
[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很新,所以我不太熟悉数据结构和迭代器工具.
创建了一个列表 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字典如下:
{'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)
这件事有两个问题:
如果列表为空,或者dict查找失败,程序将失败,因为randrange有(0,0)作为参数,这会导致错误
很多时候,两个randrange()调用都会生成相同的数字,尤其是当列表很小时.这将返回一个空列表.例如a_list [5:5]
那么,处理上述案例的随机子列表的最佳方法是什么?另外,我不关心订购.一切正常.每次for循环开始时,我只想要一个完全随机的子列表0,1 ...直到len(a_list)元素.
如果列表可以在其他一些可以容纳类似元素的数据结构中进行更改,那么这对我也有用.
考虑一个问题,其中必须从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)溶液.有没有人知道是否是这种情况,如果是这样,边际指数的分布具有哪些属性?
如何创建一个带有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) 我有一个字符串列表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)
最终存储我的输出.没有得到应有的方式.有什么建议?