在Python中克隆或复制列表有哪些选项?
在使用时new_list = my_list,每次都会对new_list更改进行任何修改my_list.为什么是这样?
如何在Python中执行以下操作?
array = [0, 10, 20, 40]
for (i = array.length() - 1; i >= 0; i--)
Run Code Online (Sandbox Code Playgroud)
我需要有一个数组的元素,但从最后到开头.
我刚刚才知道有Truthy和Falsy在Python这是与正常不同的价值观True和False?
是否有人可以深入解释什么truthy和falsy值?
我应该在哪里使用它们?
truthy和True值以及falsy和False值之间有什么区别?
我正在尝试学习python,并且遇到了一些既好又短的代码,但并不完全有意义
背景是:
def fn(*args):
return len(args) and max(args)-min(args)
Run Code Online (Sandbox Code Playgroud)
我得到它正在做的事情,但为什么python这样做 - 即返回值而不是True/False?
10 and 7-2
Run Code Online (Sandbox Code Playgroud)
返回5.同样,更改和将导致或将导致功能更改.所以
10 or 7 - 2
Run Code Online (Sandbox Code Playgroud)
会回来10.
这是合法/可靠的风格,还是有任何问题?
我有一个.py文件,它接受一个列表,找到最小的数字,将它放入一个新的数组,从第一个数组中删除最小的数字,并重复,直到原始数组返回不包含更多的项目:
def qSort(lsort):
listlength = len(lsort)
sortedlist = list()
if listlength == 0:
return lsort
else:
while listlength > 0:
lmin = min(lsort)
sortedlist.append(lmin)
lsort.remove(lmin)
listlength = len(lsort)
return sortedlist
Run Code Online (Sandbox Code Playgroud)
现在另一个.py文件导入qSort并在某个列表上运行它,将其保存到变量.然后我尝试使用.reverse()列表上的命令,我最终得到它作为一个NoneType.我尝试使用reversed(),但它只是说"<listreverseiterator object at 0xSomeRandomHex>":
from qSort import qSort #refer to my first Pastebin
qSort = qSort([5,42,66,1,24,5234,62])
print qSort #this prints the sorted list
print type(qSort) #this prints <type 'list'>
print qSort.reverse() #this prints None
print reversed(qSort) …Run Code Online (Sandbox Code Playgroud) 我想做这样的事情,但这段代码返回无列表(我认为这是因为list.reverse()正在反转列表):
map(lambda row: row.reverse(), figure)
Run Code Online (Sandbox Code Playgroud)
我试过这个,但反过来返回一个迭代器:
map(reversed, figure)
Run Code Online (Sandbox Code Playgroud)
最后我做了这样的事情,这对我有用,但我不知道这是否是正确的解决方案:
def reverse(row):
"""func that reverse a list not in place"""
row.reverse()
return row
map(reverse, figure)
Run Code Online (Sandbox Code Playgroud)
如果有人有一个我不知道的更好的解决方案,请告诉我
亲切的问候,
如果您的问题作为此问题的重复项而被关闭,那是因为您有一些通用形式的代码
x = X()
# later...
x = x.y()
# or:
x.y().z()
Run Code Online (Sandbox Code Playgroud)
其中X是某种类型,它提供了y旨在z变异(修改)对象(X类型的实例)的方法。这可以适用于:
list、dict和setbytearray这种形式的代码很常见,但并不总是错误的。问题的明显迹象是:
与x.y().z()一样,会引发异常AttributeError: 'NoneType' object has no attribute 'z'。
有了x = x.y(),x就变成None, 而不是被修改的对象。这可能会被后来的错误结果发现,或者被像上面这样的异常(x.z()稍后尝试时)发现。
Stack Overflow 上有大量关于这个问题的现有问题,所有这些问题实际上都是同一个问题。之前甚至有多次尝试在特定上下文中涵盖同一问题的规范。然而,理解问题并不需要上下文,因此这里尝试一般性地回答:
代码有什么问题吗?为什么这些方法会这样,我们如何解决这个问题?
另请注意,当尝试使用 alambda(或列表理解)来产生副作用时,会出现类似的问题。
同样明显的问题可能是由因其他原因返回的方法引起的None …
我对导致这种情况的思维过程感兴趣.对我来说,一个相对新手,似乎阻碍了,因为它阻止了列表处理的"链接"(例如mylist.reverse().append('a string')[:someLimit]).我想可能是"那些人的力量"决定列表理解是一个更好的范例(一个有效的观点),所以不想鼓励其他方法 - 但是这似乎有悖常理,以防止一种直观的方法,即使更好存在替代品.
请注意,我不是在抱怨(我敢肯定有是一个合理的理由,我在它是什么只是感兴趣!),也不是寻找一个解决方案(意见在这里非常具有启发性) -只是寻找一些情况下,并深入理解语言的设计过程.
我无法弄清楚为什么我的if-else语句没有按预期运行.我试图创建代码来测试回文字符串.我的打印功能向我显示反向方法有效,但是当我进入比较阶段时,我无法让它返回True.
这是代码:
def is_palindrome(a):
myList = []
for i in a:
myList.append(i)
print myList
new = myList.reverse()
print myList
print new
if myList == new:
return True
else:
return False
print is_palindrome("radar")
Run Code Online (Sandbox Code Playgroud)
返回False.我也尝试将if语句更改为if myList is new:但不幸的是它仍然返回False.
有任何见解赞赏!
正在解决算法问题,必须颠倒列表。完成后,我的代码如下所示:
def construct_path_using_dict(previous_nodes, end_node):
constructed_path = []
current_node = end_node
while current_node:
constructed_path.append(current_node)
current_node = previous_nodes[current_node]
constructed_path = reverse(constructed_path)
return constructed_path
Run Code Online (Sandbox Code Playgroud)
但是,一路上,我尝试了一下,return constructed_path.reverse()发现它没有返回列表......为什么会这样?
我应该能够直接返回反向列表,而不需要先执行list.reverse()or ,这难道不有意义吗list = reverse(list)?