首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

删除列表 L 的最后 3 个元素以在 Prolog 中创建列表 L1

在 Prolog 中,删除列表 L 的最后 3 个元素并创建新列表 L1,可以使用以下方法:

代码语言:prolog
复制
delete_last_three([], []).
delete_last_three([_], []).
delete_last_three([_, _], []).
delete_last_three([X, Y, Z|Tail], [X|L1]) :- delete_last_three([Y, Z|Tail], L1).

这个方法使用递归来删除列表的最后 3 个元素。当列表为空、只有一个元素或只有两个元素时,返回空列表。当列表有三个或更多元素时,将第一个元素添加到新列表中,并递归地调用 delete_last_three 函数来处理剩余的元素。

例如,如果我们有以下列表:

代码语言:prolog
复制
L = [1, 2, 3, 4, 5, 6, 7, 8, 9].

我们可以调用 delete_last_three(L, L1) 来删除最后 3 个元素并创建新列表 L1:

代码语言:prolog
复制
L1 = [1, 2, 3, 4, 5].

这个方法可以在任何 Prolog 解释器中使用,并且不需要任何特定的云计算产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Ionic 2 :如何实现列表滑动删除按钮1.创建Ionic2应用2.准备列表数据3.修改主页(HOME)模版4.创建方法删除数据5.添加一编辑按钮总结

这篇教程将展示如何使用Ionic2添加一简单删除按钮到列表,当用户滑动列表项到左边时候。这是一处理删除列表数据时候常用模式。本教程将涵盖创建这个滑动删除按钮所需要一切。 ?...这段代码还创建了一删除按钮,当ion-item-options部件显示出来时,可以点击按钮,这时会触发类定义removeItem (暂无,接下来添加)。...Delete 现在我们循环定义...我们现在有了一列表包含所有数据,用户可以滑动并显示出一delete**按钮。现在剩下是当用户点击时做点什么事。因此我们设置一简单监听以便调用方法从我们先前创建测试数据删除一项。...,然后点击删除按钮,它就会从列表删除

3.8K100

快速生成一 Python 列表

Python 可以使用列表生成式或生成器来快速创建列表列表生成式和生成器均是 Python 语法糖,这些语法糖使我们可以更加简洁、快速实现功能。...Python 还有其他语法糖,比如 if..else 三表达式、with 语句、装饰器等等。...列表生成式 列表生成式是 Python 内置强大列表创建工具,可以用来快速创建具有一定规则列表。...正常情况下我们可以通过穷举方式来创建列表,但是这种方式只适用于列表元素较少情况下「50 素以下」,如果元素太多或者元素生成规则太复杂就不太现实了,当面对这种情况时候,首先想到是使用...列表生成式无需创建列表,代码更加清晰和简单。 我们可以通过 for...in 循环后增加 if 语句来计算出 1~100 能被 10 整除平方。

1.2K30

改变开发者编码思维六种编程范式

下面是如何声明一Vector代,其中使用了shapeless库,包含值1、2、3: val l1 = 1 :#: 2 :#: 3 :#: VNil 这里创建了一变量l1,它类型签名不仅指定它是一包含...让我们使用VectorvAdd方法来执行两Vector间成对相加(pairwise addition): val l1 = 1 :#: 2 :#: 3 :#: VNil val l2 = 1...:#: 2 :#: 3 :#: VNil val l3 = l1 vAdd l2 // Result: l3 = 2 :#: 4 :#: 6 :#: VNil 上面的例子运行正常,因为类型系统知道两...val l1 = 1 :#: 2 :#: 3 :#: VNil val l2 = 1 :#: 2 :#: VNil val l3 = l1 vAdd l2 // Result: a *compile...如果使用声明式语言如Prolog来进行数字排序,可直接描述你想要输出:“我想要相同列表,但每个索引i每个项目都应小于或等于索引为i+ 1项”。

2.1K100

python基础知识入门_python新手学院

’ >>> L [‘Python’, ‘Java’, ‘JavaScript’, ‘C++’] L[i:j]=L1列表L1替换列表L第i到j项数据 >>> L[‘Python’, ‘Java’,...:2]>>> L[‘C’, ‘JavaScript’, ‘Java’, ‘Ruby’, ‘Lua’] L+=L1L.extend(L1) 将列表L1素增加到列表L >>> L;L1 [‘C’, ‘...’, ‘C’, ‘Go’][‘C’, ‘Go’] L*=n 将L列表元素重复n次 >>> L1*=2>>> L1[‘C’, ‘Go’, ‘C’, ‘Go’] L.append(x) L列表最好添加元素...如果可以,请在其中添加一元素 “Seven”   k2是字典键,对应值是列表可修改:tu[1][2][‘k2′]=’Seven’ c. 请问tu变量”k3″对应值是什么类型?...字典函数和方法 字典基本原则 字典是一键值对集合,该集合以键为索引,一键对应一值信息 字典素以键信息为索引访问 字典长度是可变,可以通过对键信息赋值实现增加或修改键值对。

2.6K20

【Python编程导论】第五章- 结构化类型、可变性与高阶函数

L.insert(i, e):将对象e插入L索引值为i位置。 L.extend(L1):将L1项目追加到L末尾。 L.remove(e):从L删除第一出现e。...如果i被省略,则i默认值为-1,删除并返回L最后元素。 L.sort():升序排列L元素。 L.reverse():翻转L元素顺序。...L1) L1 = [2, 3, 4] for循环中,Python使用一内置计数器跟踪程序列表位置,内部计数器每次迭代结束时都会增加1。...本例,内置计数器从0开始计数,程序发现了L1[0]L2,于是删除了它——将L1长度减少到3。然后计数器增加1,代码继续检查L1[1]值是否L2。...map函数最简形式,第一参数是函数(即只有一参数函数),第二参数是有序值集合,集合值可以一函数参数。

1.3K30

python入门基础

' >>> L ['Python', 'Java', 'JavaScript', 'C++'] L[i:j]=L1列表L1替换列表L第i到j项数据 >>> L['Python', 'Java',...:2]>>> L['C', 'JavaScript', 'Java', 'Ruby', 'Lua'] L+=L1L.extend(L1) 将列表L1素增加到列表L >>> L;L1 ['C', '...', 'C', 'Go']['C', 'Go'] L*=n 将L列表元素重复n次 >>> L1*=2>>> L1['C', 'Go', 'C', 'Go'] L.append(x) L列表最好添加元素...如果可以,请在其中添加一元素 “Seven”   k2是字典键,对应值是列表可修改:tu[1][2]['k2']='Seven' c. 请问tu变量"k3"对应值是什么类型?...字典基本原则 字典是一键值对集合,该集合以键为索引,一键对应一值信息 字典素以键信息为索引访问 字典长度是可变,可以通过对键信息赋值实现增加或修改键值对。

2.3K70

Python基础语法

,只能整体替换; L1=[1,'好',"12.3",(11,),[11,22],{"name":"coco"}] print(type(L1)) # print(len(L1...)) #6 5.2 列表方法 1.list.append(value):列表末尾添加元素,每次只能添加一元素 2.list.extend():将两列表合并成一列表,添加到list3.list.insert...(i,value):列表指定位置插入一元素; 4.list.pop(i):删除列表指定位置元素,如果不传入元素i则默认删除最后元素; 5.list.sort():对列表元素进行排序; 6.list.reverse...(i)删除指定索引, 没有索引则默认删除最后list.clear()删除所有的元素del list[0]从内存当中直接清除改list[i] = 'value'赋新值list.index('value...) #取a列表第二和第三值 print(a[1:3]) #取a列表第三值以及到末尾所有值 print(a[2:]) ''' 练习二: ''' L=[['windows','linux','

91610

Python数据结构 原

代码示例: l1 = [] # 声明一列表 l1 = list() #声明一列表 l2 = [1,2,3] l3 = ['a','b','c','d'] l4 = [1,2,3,'a','b',...[index]:获取指定索引元素。 [indexbegin:indexend]:获取列表一段元素。 del:删除元素或列表 len():获取列表长度。 in:判断元素是否列表。...for in:遍历列表。 max():获取最大值。 min():获取最小值 cmp():比较两列表元素。此方法只存在于2.x版本3.x版本已经删除了此方法。...l1.append("2") l1 ['2'] # 列表拼接,和+有区别,+是返回一列表,此方法是直接在列表后面添加 l2.extend(l3) # 指定位置插入指定原酸 l2.insert(0,100...l2.index(2) 1 # 针对原列表进行操作,反转列表l2.reverse() l2 [3, 2, 1] # 删除并返回指定位置元素,不指定默认删除并返回最后元素。

1.2K20

python列表

('\n')     def deletedata(self):         print(u'删除数据')         print(u"删除L1最后元素,执行命令L1.pop()")         ...    def sublist(self):         print(u"列表分片")         print(u"取列表L1第三到最后元素组成列表,执行命令L1[2:]")         ...c', 'd', 'e', 'f', 'g'] L2 =  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 插入数据 L1列表3位置插入数字100,执行命令:L1.appned(3,100...L2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'python', ('a', 'b', 'c')] 删除数据 删除L1最后元素,执行命令L1.pop() L1 =  ['...g'] 删除L2第四元素,执行命令L2.pop(3) L2 = [0, 1, 2, 4, 5, 6, 7, 8, 9, 'python', ('a', 'b', 'c')] 列表分片 取列表L1第三到最后元素组成列表

1.7K30

python3--中一些常见坑(机制上问题)

python is,==,id 意思 == :数值比较 is :内存地址比较 id :查看内存地址 list(列表)存在一些坑 重点:循环一列表时,最好不要进行删除动作(一旦删除,索引会随之改变...这个答案才是正确,因为每次列表删除后,原列表索引值都会改变,导致结果不一样 dict(字典)中一些错误使用方法 重要:循环列表或者字典时候,千万不要做添加或者删除操作 dic = dict.fromkeys...{1: ['你好'], 2: ['你好'], 3: ['你好']} 上面,dic里面的3列表,在内存对应是同一列表,所以里面的内容相同 例2 dic = {'k1':'value1','k2'..., l2) 执行结果,结果是一样 [1, 2, 3, 111] [1, 2, 3, 111] 对于赋值运算,指向是同一内存地址,字典,列表,集合都一样 copy不是指向同一,在内存开辟了一内存空间...,第一层创建是新内存地址,而从第二层开始,指向都是同一内存地址 深copy,需要导入一模块copy import copy l1 = [1, 2, [1, 2, 3], 4] l2 = copy.deepcopy

36110

python之列表、元组、字典

改 通过索引,对列表某个索引值进行修改 ? 查 查看列表某元素出现次数 count ? 查看某元素第一次出现位置 ? 删 删除列表指定元素,只删除第一次出现元素 ?...删除列表中指定索引值 ? 删除列表对象,可以del 后面加上切片 ? 7 排序和反转 1.sort() ? 反转 ?...由上述图片可知,其除第0行和第1行外,后面每一行都是上方两个数字之和,因此,需要取出上一行数据,进行相关运算,可使用l1[-1]取出上一行最后元素进行匹配操作,而后通过对其进行相关求和操作并生成到一列表...1 浅拷贝: 当列表存在有列表时,其修改这个列表列表某一元素时,其他被拷贝列表对应元素也将被拷贝,其拷贝这个列表列表时,拷贝是这个内嵌列表内存位置。...二 字典(关联数组、散列表) 1 字典创建 1 赋值创建字典 ? 2 通过工厂函数创建字典 注: 可迭代对象元素必须是二数组 ? ?

2.8K10

Python基础数据类型:列表【增删改查

extend #迭代着追加,列表最后面迭代着追加一组数据【把可迭代对象拆解为最小元素,如字符串'abcd'---->'a','b','c','d' 列表 ['alex', 1, 3] --->...使用默认,不加参数,删除最后元素 print(l1) #['太白', '女神', 'xiao', '吴老师'] remove #指定元素删除,如果有重名元素...注意:循环一列表过程,如果你要改变列表大小(增加值,或者删除值),那么结果很可能会出错或者报错。...分析知道: # 如果列表元素个数为奇数n,要删除索引号为奇数(按正奇数1,3,5,..删.)元素,倒着删除, # 每次删除元素,要从索引为-2开始删除删除后下一次要删除元素索引号变为-3...l1[-1].append('老男孩教育') # 3,将列表'alex'通过字符串拼接方式列表变成'alexsb' l1[-1][1] = l1[-1][1] + 'sb' l1[-1][

1K40

Python基础之列表常见操作经典实例详解

,也可包含另一列表【可任意组合嵌套】 列表是以方括号“ []”包围数据集合,不同成员以“ ,”分隔 列表可通过序号访问其中成员 创建列表方式 #创建含有元素1,2,4,8,16,32...(obj):统计某个元素列表中出现次数 3、list.extend(seq):列表末尾一次性追加另一序列多个值(用新列表扩展原来列表) 4、list.index(obj):从列表找出某个值第一匹配项索引位置...5、list.insert(index, obj):将对象插入列表 6、list.pop(obj=list[-1]):移除列表元素(默认最后元素),并且返回该元素值 7、list.remove...5, 6]) #直接扩增l1 #相当于 l1 += [4,5,6] 2.删除元素 A.按item索引或切片删除 l1 = [1, 2, 3, 4, 5, 6] del l1[0] #得到[2, 3...l1[:] = [] #清空了 C.索引 l1 = [1,2,3,4,5] l1[0] #1 l1[-1] #5,负数索引从尾部开始计数,最后元素为-1 D.切片 l1 = [1, 2, 3,

46220

6 新奇编程方式,改变你对编码认知

例如,假设你写了三行代码,A,B和C: 大多数编程语言中,A先执行,然后执行B,最后执行C。像ANI这样语言中,A,B和C都将同时执行。...但是如果你编译器能检查一变量是“一正整数”,“一长度为2列表”还是“一回文字符串”呢?...下面是如何声明一Vector包含无形库1,2,3值: 这将创建变量l1,它类型签名不仅指定它Vector是包含Ints,而且指定它Vector长度为3.编译器可以使用此信息来捕获错误。...当所有的事情都做完后,会得到一42结果 这种编程风格颇有趣味:程序可以以无数种方式拆分和连接以创建新程序; 非常简单语法(甚至比LISP更简单),导致非常简洁程序; 也具有强大编程支持。...如果您使用像Prolog这样声明性语言对数字进行排序 ,则应该描述所需输出:“我需要相同列表,但索引每个项目 i应小于或等于索引处项目i + 1”。

2.3K50

Python面试题大全(一):基础知识学习

36.两有序列表l1,l2,对这两列表进行合并不可使用extend 37.给定一任意长度数组,实现一函数 38.写一函数找出一整数数组,第二大数 39.阅读一下代码他们输出结果是什么...,类是用于创建类对象类,类对象创建实例对象时一定要调用call方法,因此调用call时候保证始终只创建实例即可,type是python类 class Singleton(type):...遍历列表操作,删除原来列表操作 a = [1,2,3,4,5,6,7,8] print(id(a)) print(id(a[:])) for i in a[:]: if i>5:...],而不是[0,3,6,9]产生原因是Python闭包后期绑定导致,这意味着闭包变量是在内部函数被调用时候被查找,因为,最后函数被调用时候,for循环已经完成, i 最后3,因此每一返回值...i都是3,所以最后结果是[9,9,9,9] 40.统计一段字符串字符出现次数 # 方法一 def count_str(str_data): """定义一字符出现次数函数"""

60650

python3--元组(tuple),列表(list),字典dict,其它(for,enumerate,range)

列表list 列表是python基础数据类型之一,其他语言中也有类似于列表数据类型,比如js叫数组,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型 li = ['Sam',..., 'a', 'b', 2, 3, 'a'] # append追加,最后位置添加元素 li.append('xiao') # 添加一列表 li.append([1, 2, 3]) print(li...默认删除最后 pop()是增删改查,所有方法里面,唯一有返回值方法 返回删除元素,pop()只能删除元素 li = [1, 'a', 'b', 2, 3, 'a', 'hello world...') print(li) # 8:请删除列表第2元素,并输出删除元素和删除元素后列表 print(li.pop(2)) print(li) # 9:请删除列表第2至4元素,并输出删除元素后列表...列表切片形成新列表l1,l1 = [1,3,2] ll = li1[:3] print(ll) # 2:通过对li1列表切片形成新列表l2,l2 = [’a’,4,’b’] l2 = li1[

88710

python列表类型

列表结构 列表是可变对象,可以原处修改列表元素而不会让列表有任何数据变动。...变量名L存储了列表内存地址,列表内部包含了类型声明、列表长度等数据,还保存了属于列表3元素内存地址。需要注意是,列表元素不是直接存在列表范围内,而是以地址形式保存在列表。..., 2, 3, 4] 可以通过+=方式进行二赋值: >>> L1 = [1,2,3,4] >>> L2= [5,6,7,8] >>> L1 += L2 >>> L1 [1, 2, 3, 4, 5,...前者直接在L1原始地址内进行修改,后者新创建列表对象并拷贝原始L1列表。但实际上,性能差距是微乎其微,前面说过列表中保存是元素引用,所以拷贝也仅仅只是拷贝一些引用,而非实际数据对象。...', 'Go'] python 3.x,sort()和sorted()不允许对包含不同数据类型列表进行排序。

1.1K20

python学习要点(二)

l1[0].append(3),这里表示对 l1 第一列表新增元素 3。...因为 l2 是 l1 浅拷贝,l2 第一元素和 l1 第一元素,共同指向同一列表,因此 l2 第一列表也会相对应新增元素 3。...l1[1] += (50, 60),因为元组是不可变,这里表示对 l1 第二元组拼接,然后重新创建了一新元组作为 l1 第二元素,而 l2 没有引用新元组,因此 l2 并不受影响。...深度拷贝 所谓深度拷贝,是指重新分配一块内存,创建对象,并且将原对象元素,以递归方式,通过创建子对象拷贝到新对象。因此,新对象和原对象没有任何关联。...def my_func4(l2): l2 = l2 + [4] l1 = [1, 2, 3] my_func4(l1) l1 [1, 2, 3] 这里 l2 = l2 + [4],表示创建了一

42730

python进行参数传递方法

列表 还有一列表例子,再来瞅瞅: In [6]: l1 = [3,4,5,6] In [7]: l2 = l1 In [10]: l1.append(7) In [11]: l1 Out[11]:...[3, 4, 5, 6, 7] In [12]: l2 Out[12]: [3, 4, 5, 6, 7] 代码,我们让l1l2这两变量都指向了[3,4,5,6]这个对象,我们知道列表是一种可变数据结构...,所以append操作并不会产生新对象,只是末尾添加了一元素,变成了[3, 4, 5, 6, 7],由于 l1l2 同时指向这个列表,所以列表变化会同时反映在 l1l2 这两变量上...对象删除 python变量是可以删除,但是对象是没办法删除 In [22]: a = [1,4,5] In [23]: del a del语句删除a这个变量,就无法通过a访问[1,4,5],但是这个对象存在还是存在...def func(l2): l2 = l2 + [4] l1 = [12,3,6] func(l1) l1 [12,3,6] 可以看到,l1没有发生变化,原因是l2 + [4]这个操作表示创建了一末尾加入元素

1.3K10
领券