赞
踩
答:如果创建了一个列表,但没有将其赋值给变量名,这就是一个匿名列表。由于没有名字,将导致列表创建完也没办法再次访问到它。
答:我的答案是:list1.pop()和list1[-1]。其实用pop()是不严谨的,因为虽然得到了列表的最后一个元素,但同时也弹出了该元素。
小甲鱼给的答案是list1[len(list1) - 1] 和 list1[-1]。
使用下标索引的方式可以实现列表的随机访问(就是你想访问哪个元素就访问哪个)。
第一种方法是先使用 len() 函数计算列表的长度,然后 -1 是因为下标索引值是从 0 开始数起的。
第二种方法因为 Python 是允许反向索引的,下标值为 -1,则表示直接访问最后一个元素。
>>> list1 = [1, 2, 8, 9]
>>> list2 = [3, 4, 5, 6, 7]
答:代码如下:
>>> list1 = list1[:2] + list2 + list1[2:]
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8, 9]
答:支持,字符串也是可迭代对象。
>>> s = [1, 2, 3]
>>> s.append([4, 5, 6])
答:不会。因为 Python 的列表是支持任何类型的对象,当然也包括列表啦。不过添加之后,s 列表的值会变成 [1, 2, 3, [4, 5, 6]],第 4 个元素是另外一个列表。
>>> s = [1, 2, 3, 4, 5]
>>> s.append(6)
答:s.insert(len(s), 6)
列表的 insert(i, x) 方法需要两个参数,第一个参数是指定插入的位置,这里我们要将 6 这个数据插入到列表末尾,那么将该参数设置为 len(s) 即可。注意灵活使用 len() 函数。
>>> s = [1, 2, 3, 4, 5]
>>> s.extend(["FishC"])
答:[1, 2, 3, 4, 5, ‘FishC’]
列表的 extend() 方法的参数需要是一个可迭代对象,然后将可迭代对象的元素逐个插入到列表中……
那么这里的可迭代对象是 [“FishC”],它只有一个元素,就是 “FishC”。
如果代码换成 s.extend(“FishC”),那么结果就会变成 [1, 2, 3, 4, 5, ‘F’, ‘i’, ‘s’, ‘h’, ‘C’]。
>>> s = [1, 2, 3, 4, 5]
>>> s.append("上山打老虎")
>>> s
[1, 2, 3, 4, 5, '上山打老虎']
答:s[len(s):] = [“上山打老虎”]
切片的语法很神奇,s[len(s):] = [“上山打老虎”] 其实相当于执行了两个步骤……
由于 s[len(s):] 指定的是列表的末尾,所以该代码是将右侧可迭代对象的内容(“上山打老虎”)插入 s 列表的末尾。
>>> s = [1, 2, 3, 4, 5]
>>> s.extend("上山打老虎")
>>> s
[1, 2, 3, 4, 5, '上', '山', '打', '老', '虎']
答:s[len(s):] = “上山打老虎”
这一题跟上一题比较的话,有一个容易混淆的点,就是上一题的可迭代对象是一个列表([“上山打老虎”],这个只有 1 个元素),而这一题的可迭代对象是一个字符串(“上山打老虎”,有 5 个字符元素构成)。
>>> s = [1, 2, 3, 4, 5]
>>> s[len(s)-2:] = [2, 1]
答:[1, 2, 3, 2, 1]
请参考第 4 题的解析,s[len(s)-2:] = [2, 1] 的第一个步骤是先将 s[len(s)-2:] 指定的内容清除,即清除掉最后两个元素;第二个步骤是插入赋值号右边的内容,所以结果是 [1, 2, 3, 2, 1]。
比如给定的列表 nums = [2, 7, 11, 15],目标值 target = 9,那么由于 nums[0] + nums[1] = 2 + 7 = 9,所以打印结果是:[0, 1]
答:代码如下:
target=9
nums=[2,11,7,15]
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i]+nums[j]==target:
print(f"[{i},{j}]")
break
break
这里两层嵌套循环的执行逻辑就是:外层循环获取一个被加数,然后和内层循环获取的每一个加数进行相加,判断它们的和是否等于 target 变量的值,如果是,则打印结果。
答:代码如下:
target=0
nums=[]
while True:
user_input=input("请录入一个整数(输入STOP结束): ")
if user_input=="STOP":
break
nums.append(int(user_input))
target=int(input("请录入目标整数: "))
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i]+nums[j]==target:
print(f"[{i},{j}]")
【注】一定要注意input()返回的是字符串类型,使用之前要进行类型转换!!!
小甲鱼提供的代码如下:
nums = [] isInput = True while isInput == True: x = input("请录入一个整数(输入STOP结束):") if x != "STOP": nums.append(int(x)) else: isInput = False target = int(input("请录入目标整数:")) isFind = False n = len(nums) for i in range(n): for j in range(i+1, n): if nums[i] + nums[j] == target: print([i, j]) isFind = True if isFind == False: print("找不到!")
isInput 和 isFind 两个变量是用于标识程序状态的,比如 isInput 用来标识用户是否还在录入整数,默认将其赋值为 True,当检测到用户输入的是 “STOP”,则将其修改为 False,我们将它直接作为循环的退出条件,岂不妙哉!
同样的道理,我们使用 isFind 变量来记录 “是否成功找到” 这么一个事儿,等所有元素逐一比较之后(两层循环都执行完毕),如果它还是 False,就说明没有找到,就会返回 “找不到!”
学会使用这种状态标识符还是有必要的~
程序实现如下:
答:代码如下:
import random
nums=[]
for i in range(10000):
x=random.randint(1,65535)
nums.append(x)
target=int(input("请录入目标整数: "))
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i]+nums[j]==target:
print(f"[{i},{j}]")
条件:
示例:
str1=input("请输入待测试字符串: ") stack=[] #建栈 str2=["(","{","["] IsFalse=True for each in str1: if each in str2: # 如果读到左括号,则添加到栈中 stack.append(each) else: # 读到右括号的情况 if each not in [")","}","]"]: continue else: if len(stack)==0: IsFalse=False break if each == ")": a=stack.pop() if a!="(" : IsFalse=False break elif each == "}": a=stack.pop() if a!="{": IsFalse=False break elif each == "]": a=stack.pop() if a!="[": IsFalse=False break if IsFalse==True and len(stack)==0: print("合法^o^") else: print("非法T_T")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。