随机将一字符串/列表的元素移到另一对象中后
本帖最后由 12345ab 于 2022-6-16 17:20 编辑例子:
a,b= 'abc','123'
move(a,b)
print(a,b)
输出可以是:ab 123c
(a的随机一个字元移到b尾部)
例子2:
a,b= ['apple,'banana','car'],['dog','egg','fun']
move(a.b)
print(a,b)
输出可以是:
['banana','car'] ['dog','egg','fun','apple']
(a的一个元素移到b列表尾部)
我写的代码:(并不能达到标题的要求)
import random
def move(a,b)
rand = int(random.random()*len(a))
b += a
del a
但是我发现(以例子2为例)当a和b的类型是列表时 .
a的类型是并不是列表,
于是导致了 b += a最后的结果是
['dog','egg','fun','a','p','p','l','e']
我也曾想过使用pop()方法但这一方法却又不兼容str类型
难道就没有一个能同时兼容字符串和列表的方法么{:10_266:} 希望我有将我的意思表达清楚{:10_245:} 你确定你的函数能实现例子1的结果? import random
def move(a, b):
b.append(a.pop(random.randint(0,len(a)-1)))
# 仅限 ab 都是列表
a,b= ['apple', 'banana','car'],['dog','egg','fun']
move(a, b)
print(a,b)
hrpzcf 发表于 2022-6-15 17:16
它的意思是用一个函数可以实现任意类型的 wp231957 发表于 2022-6-15 17:17
它的意思是用一个函数可以实现任意类型的
那只能给函数加返回值了,要是a, b类型不同的的话那就更复杂了 不符合逻辑,比如 tuple 类型是不可改类型(只能换新对象)但都是可迭代。
Python 虽然很多很简化操作方法,但由于太简化,导致一些代码想自行更改其构造或者自定义构造反而变得非常困难。C++ 的重载或 C 的空指针完美解决这种问题。
傻眼貓咪 发表于 2022-6-15 22:50
不符合逻辑,比如 tuple 类型是不可改类型(只能换新对象)但都是可迭代。
Python 虽然很多很简化操作方 ...
感谢指正 我当时忽略了元组字典这些类型了{:10_264:}
准确来说只需要兼容列表和字符串就行了
12345ab 发表于 2022-6-16 17:18
感谢指正 我当时忽略了元组字典这些类型了
准确来说只需要兼容列表和字符串就行了
用type探测类型,然后建立两个分支 wp231957 发表于 2022-6-16 17:26
用type探测类型,然后建立两个分支
好主意 12345ab 发表于 2022-6-16 17:18
感谢指正 我当时忽略了元组字典这些类型了
准确来说只需要兼容列表和字符串就行了
from random import randint
def foo(A, B):
n = randint(0, len(A) - 1)
if type(A) == str:
X = ''.join()
Y = B + A
return X, Y
B += ]
A.pop(n)
return A, B
a = "banana"
b = "flower"
a, b = foo(a, b)
print(a, b)
# -------------------
c = ['a', 'b', 'c']
d =
c, d = foo(c, d)
print(c, d)
banna flowera
['b', 'c'] 傻眼貓咪 发表于 2022-6-16 17:37
十分感谢
你这比我写的那段简洁多了{:10_264:}
页:
[1]