我试图扩展一个列表,并对结果返回值为None感到困惑.我试过的是这个:
>>> a = [1,2]
>>> b = [3,4]
>>> a = a.extend(b)
>>> print a
None
Run Code Online (Sandbox Code Playgroud)
我终于意识到问题是最后对'a'的冗余分配.这样可行:
>>> a = [1,2]
>>> b = [3,4]
>>> a.extend(b)
>>> print a
[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
我不明白的是为什么第一个版本不起作用.对'a'的赋值是多余的,但为什么它会破坏操作呢?
我对python很新,我遇到了一个无法解释的问题.我试着在这里搜索论坛的答案,但我发现的东西与我的情况不符.感觉我错过了一些非常基本的东西,但我没有看到它(显然......)
这段代码以我期望的方式运行:
import string
mults = [1,2,3,4,6,7,9,10,12,15,16,19,21,22,24]
def factor_exp(lst):
if lst[-1] == 1:
lst.pop()
return lst+[1]
if lst[-1] == 2:
lst.pop()
return lst+[1,1]
else:
return "Should never get here"
print factor_exp([1])
print factor_exp([2])
print factor_exp([1,2])
Run Code Online (Sandbox Code Playgroud)
返回:
>>>
[1]
[1, 1]
[1, 1, 1]
Run Code Online (Sandbox Code Playgroud)
这就是我想要的.
我认为在函数内部的列表中使用append和extend也可以.在代码底部附近添加了一个"附加".
import string
mults = [1,2,3,4,6,7,9,10,12,15,16,19,21,22,24]
def factor_exp(lst):
if lst[-1] == 1:
lst.pop()
return lst+[1]
if lst[-1] == 2:
lst.pop()
return lst.append([1,1])
else:
return "Should never get here"
print factor_exp([1])
print factor_exp([2])
print factor_exp([1,2])
Run Code Online (Sandbox Code Playgroud)
但这回归:
>>> …Run Code Online (Sandbox Code Playgroud) 我想知道是否有人可以帮助我解开这个谜团。当我运行我的程序时,它显示错误。
类型错误:“NoneType”对象不可迭代
我已经测试过我尝试迭代的变量是一个列表,但它仍然说它无效并显示相同的错误。
我的代码意味着打印一个对称的星号三角形:
def iterat(num):
for x in num:
yield x
number=int(input("Enter Positive Number: "))
stars = list(range(number))
print(type(stars))
spaces = stars.reverse()
yeildStar = iterat(stars)
yeildSpace = iterat(spaces)
for star,space in zip(yeildStar,yeildSpace):
print(" "*(space)+"*"*((star*2)-1))
Run Code Online (Sandbox Code Playgroud)
非常感谢。抱歉变量名不好
编辑; 感谢您的帮助。
spaces = reversed(stars)
Run Code Online (Sandbox Code Playgroud)
工作完美
我很困惑:
class lin_reg:
def __init__(self):
''' Executes the program '''
Indep_Array, Dep_Array = self.Prob_Def()
Total_Array = Indep_Array.append(Dep_Array)
print Indep_Array, Dep_Array, Total_Array
NumArray = len(Total_Array)
def Prob_Def(self):
Analy_Type = raw_input('Type of Regression(linear-n,nonlinear-nl): ')
Num_IndepVar = eval(raw_input('Number of Independent Variables: '))
Indep_Array = []
for IndepVar in range(Num_IndepVar):
ArrayInput = eval(raw_input('Enter the array: '))
Indep_Array.append(ArrayInput)
Dep_Array = eval(raw_input('Enter the dependent array: '))
return Indep_Array, Dep_Array
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我得到如下输出:
obs=lin_reg.lin_reg()
Type of Regression(linear-n,nonlinear-nl): nl
Number of Independent Variables: 3
Enter the array: [1,2,3]
Enter the …Run Code Online (Sandbox Code Playgroud) 这是代码,它非常简单,它看起来像很多代码:
from collections import namedtuple
# make a basic Link class
Link = namedtuple('Link', ['id', 'submitter_id', 'submitted_time', 'votes',
'title', 'url'])
# list of Links to work with
links = [
Link(0, 60398, 1334014208.0, 109,
"C overtakes Java as the No. 1 programming language in the TIOBE index.",
"http://pixelstech.net/article/index.php?id=1333969280"),
Link(1, 60254, 1333962645.0, 891,
"This explains why technical books are all ridiculously thick and overpriced",
"http://prog21.dadgum.com/65.html"),
Link(23, 62945, 1333894106.0, 351,
"Learn Haskell Fast and Hard",
"http://yannesposito.com/Scratch/en/blog/Haskell-the-Hard-Way/"),
Link(2, 6084, 1333996166.0, 81,
"Announcing Yesod …Run Code Online (Sandbox Code Playgroud) 我有类似的东西:
>>> S=list()
>>> T=[1,2,3]
>>> for t in T:
... print(S.append(t))
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
...
None
None
None
Run Code Online (Sandbox Code Playgroud)
我希望S包含t.为什么这不适合我?
我想制作一个"走路"的模型.

所以我创建了8个函数:
g0 = lambda ct: ct.append((lambda (x,y): (x-1,y))(ct[-1]))
g1 = lambda ct: ct.append((lambda (x,y): (x-1,y+1))(ct[-1]))
g2 = lambda ct: ct.append((lambda (x,y): (x,y+1))(ct[-1]))
g3 = lambda ct: ct.append((lambda (x,y): (x+1,y+1))(ct[-1]))
g4 = lambda ct: ct.append((lambda (x,y): (x+1,y))(ct[-1]))
g5 = lambda ct: ct.append((lambda (x,y): (x+1,y-1))(ct[-1]))
g6 = lambda ct: ct.append((lambda (x,y): (x,y-1))(ct[-1]))
g7 = lambda ct: ct.append((lambda (x,y): (x-1,y-1))(ct[-1]))
Run Code Online (Sandbox Code Playgroud)
但当我尝试应用任何功能时,我得到None:
print g0([(50,50)])
None
Run Code Online (Sandbox Code Playgroud)
好吧,Iet尝试更传统的方式:
def g0(ct):
ct.append((lambda (x,y): (x-1,y))(ct[-1]))
return ct
Run Code Online (Sandbox Code Playgroud)
这是按预期工作的:
[(50, 50), (49, 50)]
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试
def g0(ct): …Run Code Online (Sandbox Code Playgroud) 我有这样的示例列表:
l = [1,2,3]
print(l.reverse())
#give None instead [3, 2, 1]
Run Code Online (Sandbox Code Playgroud)
那个怎么样?我该如何反转清单?
我需要这个来反转列表中的内容,如果它的数字或单词现在在我运行它时打印出来None.我需要它来打印反转列表.有人可以帮忙吗?
def func4(x):
print(x.reverse())
return;
e = ['baby','egg','chicken']
func4(e)
Run Code Online (Sandbox Code Playgroud) 码:
import math
import time
import random
class SortClass(object):
def sort1(self, l):
if len(l)==1:
return l
elif len(l)==2:
if l[0]<l[1]:
return l
else:
return l[::-1]
else:
pivot=math.floor(len(l)/2)
a=l[pivot:]
b=l[:pivot]
a2=self.sort1(a)
b2=self.sort1(b)
if a2==None or b2==None:
a2=[]
b2=[]
return (a2+b2).sort()
return []
Sort=SortClass()
x=[20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]
print(Sort.sort1(x))
Run Code Online (Sandbox Code Playgroud)
代码输出None,即使它应该在两种情况下返回一个空列表:
return []
Run Code Online (Sandbox Code Playgroud)
和
a2=self.mergeSort(a)
b2=self.mergeSort(b)
if a2==None or b2==None:
a2=[]
b2=[]
return (a2+b2).sort()
Run Code Online (Sandbox Code Playgroud)
详细信息:代码用于我为python练习制作的列表排序模块(我在python中相对较新).sort1是一个修改过的mergesort.